【发布时间】:2020-05-15 08:53:43
【问题描述】:
我有一个 Access 数据库,用于跟踪特定类型帐户持有人的交易。每个帐户持有人都有一个指定的 ID 号。我有一个查询,列出了数据库中帐户持有人的所有 ID 号。我还有一份报告,显示特定账户持有人的交易数据。每周我的一个同事必须为每个帐户持有人手动运行报告(总共大约 80 个)并导出为 PDF,然后通过电子邮件发送给每个帐户持有人。
列出所有账户 ID 号的查询是一个选择查询“qryIDdropdown”,它显示两个字段(列):ID 号和账户持有人姓名。用于生成 PDF 的报告称为“IDReport”。打开报告时,会出现一个输入参数值框,用户在其中输入 ID 号。
我正在尝试执行一个简单的循环,该循环从查询“qryIDdropdown”中获取每个唯一 ID 号并将其输入到报告中,然后另存为 PDF 并循环到下一个 ID 号。
我对 VBA 还是比较陌生,无法弄清楚为什么我的代码不起作用。当我运行它时,它会以正确的名称和正确的位置保存 PDF 文件,但它只是相同 ID 号报告的副本。这是我的代码:
Sub pdfcreate()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim MyFileName As String
Dim mypath As String
Dim temp as String
mypath = "H:\TITLE_DEV\"
Set db = CurrentDb()
Set rs = db.OpenRecordset("SELECT DISTINCT [ID Number] FROM [qryIDdropdown]")
rs.MoveFirst
Do Until rs.EOF
temp = rs("ID Number")
MyFileName = rs("ID Number") & ".PDF"
DoCmd.OpenReport "IDReport", acViewReport, "ID Number = '" & temp & "'"
DoCmd.OutputTo acOutputReport, "", acFormatPDF, mypath & MyFileName
DoCmd.Close acReport, "IDReport"
DoEvents
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set db = Nothing
End Sub
当我单步执行时,我可以看到我的 temp 字符串等于正确的(每个循环唯一)ID 号,但运行报告时就好像每次都输入了相同的 ID 号.
感谢任何帮助!
【问题讨论】:
-
id 是数字还是文本?
-
id 是数字
-
我不认为你需要
''s then in the id number = -
我删除了撇号,所以它现在显示为
DoCmd.OpenReport "IDReport", acViewReport, "ID Number = " & temp,它仍然在做同样的事情 -
我在这个线程上找到了一个可行的解决方案:stackoverflow.com/questions/32641551/…