2013-08-16 27 views
-1

我正在努力学习vba为我为我工作的公司开发的系统。然而,这是一个陡峭的学习曲线。具体来说,我希望自动化一系列MS Access 2013报告,而不是在每次我要发送报告时输入报告的新ID#。您可以使用vba在访问查询中引用单个字段中的单个条目吗?

我可以通过查询获取所需的所有id#列表,但我想知道是否有某种方法让vba按顺序遍历每条记录,将id#分配给一个变量(和/或者把它放在一个当前控制报告形式的未绑定控件中),然后生成报告的pdf(最终我想自动给该报告发送电子邮件)。

真的,这是但是如果成功的话,它可以在将来节省数不清的时间,到目前为止,我所能做的只是从vba打印一份报告给pdf,但我必须将数据输入到表单中,没有节省任何时间

任何想法都会很棒。对vba很新颖。

谢谢。

回答

2

网络上应该有大量的DAODatabase.Openrecordset()Recordset.Movenext循环的代码示例。

尝试创建一个全局IDNo变量(数据库中的模块标头中的PublicFriend变量)和数据库模块中的ID()函数,返回IDNO变量的值,并使用该函数在该报告的查询来筛选记录。

对于通过您的Recordset的每个循环,将相应的数据分配给IDNo全局变量,然后执行DoCmd.OpenReport

您应该在recordset中为每个record获取一份报告,并根据ID进行过滤。

0
Dim db as Database 
Dim rec1 as Recordset 
Dim rec2 as Recordset 

Set db = CurrentDB 
set rec1 = db.OpenRecordset ("Select IDNum from TableWithIDs") 

Do While rec1.EOF = False 
set rec2 = db.OpenRecordset("Select * from ReportTable Where IDNum = " & rec1(0) & "") 

... Process report based on the query results of rec2 

set rec2 = nothing 
rec1.MoveNext 
Loop 
相关问题