Office中国论坛/Access中国论坛

标题: 批量打印引用有条件查询的报表 [打印本页]

作者: 阿松    时间: 2010-10-25 15:16
标题: 批量打印引用有条件查询的报表
报表是引用的是一个查询,该查询是有字段条件的。比如查询是员工信息,报表已经设计成每个员工的信息(单独的,页眉等已经设计好了),启动报表时要求输入员工姓名,但每次只能打一张。如果同时打多个员工的信息如何做呢?我可以做一个表放入我要打印的员工姓名,但如何运用宏去做呢?如果不行,是不是必须要重新设计一个批量查询和报表?
作者: sgrshh29    时间: 2010-10-25 16:07
二个方法供你参考:
1,根据你的名单循环改变报表的数据源
2,做一个查询包含你的名单,然后报表做成按名单分组报表
作者: 阿松    时间: 2010-10-26 08:47
谢谢,我就是不知道如何在语句上循环运用.我尝试在宏上做,但我一次都不会引用.因为会跳出对话框要求输入员工工号.我就不知道怎么做了.
我知道思路,就是不知道如何做.
前辈帮忙.
作者: sgrshh29    时间: 2010-10-26 15:59
麻烦你上传个附件吧,空手道讲不清楚。
作者: 阿松    时间: 2010-10-27 21:46
比如:(报表:人员打印表)是每人一张,报表我不想修改。
报表所引用的查询(人员查询)我也不想修改。
在(表:人员打印)里面放入我要打印的人员的编号,然后用宏或VBA一次性打印出来。
我现在是点一下报表,输入一个号码,然后打印,再点一下报表,在输入另一个号码。。。。

作者: sgrshh29    时间: 2010-10-28 12:27
回复 阿松 的帖子

下面的示例给出二种方法,其中第二种方法为了让你看的清楚,在每张报表之间设置了5秒钟的延时。在实际操作中是没有必要的。(示例中是报表预览方式打开,在实际操作中直接打印就可以了。)
[attach]43932[/attach]

作者: 阿松    时间: 2010-10-28 21:20
谢谢您,我明天到公司里试一下.
我把窗体中的行来源改成(表:人员打印),因为我不需要打印每个人员,只打印我需要打印的人员.您的我修改的我都会试一下.再高手您我的结果.
作者: sever_L    时间: 2010-10-29 00:20
非常感谢
作者: sgrshh29    时间: 2010-10-29 07:19
阿松 发表于 2010-10-28 21:20
谢谢您,我明天到公司里试一下.
我把窗体中的行来源改成(表:人员打印),因为我不需要打印每个人员,只打印我需 ...

你需要打印哪几个人员,就先在列表中选中那几个人,然后打印就可以了。
作者: 阿松    时间: 2010-10-29 21:21
我尝试把下面那段代码
For Each vItem In Me.List1.ItemsSelected
改成引用"人员打印"表,但一直没有成功.不知道如何写.自己都觉得自己太菜了.
因为我实际是从其他地方把大量数据拷贝到表里面再打印,一个个点太费时.而且容易错.就是把窗体的行来源改成"人员打印"表,也还是要点.
还有一点我不明白:循环是For Each .... Next 但DoCmd是在外面,为什么会打好几页呢?
作者: ldshuishijie    时间: 2011-1-10 18:59
很好
作者: momocaicai    时间: 2011-2-16 14:40
藏书不难,能看为难;看书不难,能读为难;
  读书不难,能用为难;能用不难,能记为难。藏书不难,能看为难;看书不难,能读为难;
  读书不难,能用为难;能用不难,能记为难。藏书不难,能看为难;看书不难,能读为难;
  读书不难,能用为难;能用不难,能记为难。
作者: aknier    时间: 2011-3-31 15:40
Private Sub Command0_Click()
Dim strT As String
Dim vItem As Variant
For Each vItem In Me.List1.ItemsSelected
strT = strT & vItem & ","
Next
DoCmd.OpenReport "人员打印表", acViewPreview, , "id in (" & strT & "0)"

红色标记的能及解释下,什么意思?
End Sub
作者: wuheng    时间: 2011-4-6 15:36
学习了~~~~~~~````,谢谢
作者: pascal331    时间: 2011-12-10 23:24
aknier 发表于 2011-3-31 15:40
Private Sub Command0_Click()
Dim strT As String
Dim vItem As Variant

打印在id字段中所有包含strT值的人员(不知道我理解的对不对)




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3