您可以使用vba从访问查询中的单个字段引用单个条目吗?

时间:2013-08-16 03:17:57

标签: vba ms-access ms-access-2013

我正在尝试为我正在为我所工作的公司开发的系统学习vba。然而,它是一个陡峭的学习曲线。具体来说,我希望自动化一系列MS Access 2013报告,而不是每次要发送时都为报告输入新的id#。

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

真的,这对我来说很重要,但如果成功的话,它可以在将来节省无数个小时。到目前为止,我所能做的只是从vba打印到pdf的报告,但我必须将数据输入到表单中,这不会随时节省。

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

感谢。

2 个答案:

答案 0 :(得分:2)

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

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

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

您应该为record中的每个recordset收到一份报告,并根据ID进行过滤。

答案 1 :(得分: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