-1

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

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

真的,这对我来说是很多事情,但如果成功的话,将来可以节省无数个小时。到目前为止,我所能做的就是从 vba 将报告打印为 pdf,但我必须将数据输入到表单中,这并没有节省任何时间。

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

谢谢。

4

2 回答 2

2

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

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

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

record您应该为您的 中的每个获得一份报告recordset,过滤 ID。

于 2013-08-16T03:47:41.153 回答
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
于 2013-08-16T15:08:53.207 回答