【问题标题】:Need help getting report to correctly loop in Access需要帮助让报告在 Access 中正确循环
【发布时间】:2014-08-14 11:52:01
【问题描述】:

我有一个包含五个表(LDAP_Users、USERS、Courts Users、Accounts 和 Supervisors)的数据库,所有这些表都由 LDAP 表中的用户名链接。我创建了一个查询,从五个表中检索 10 个字段。我还创建了一个表单来显示这十个字段。表单的结构是 Supervisor 是组,其下是主管的姓名、电子邮件和电话号码,然后是受监管的用户、用户可以访问的帐户和帐户访问的类型。

我有以下代码,我的最终状态是让数据库遍历每个主管并检索他们作为报告的一部分监管的用户。将文件保存到我的网络驱动器并最终获取电子邮件变量并通过电子邮件将特定报告发送给主管。

问题,第一个报告保存到网络,但由 31 个页面组成的第二个只是继续循环,并没有移动到下一个主管。就电子邮件而言,我完成了迭代,然后继续处理电子邮件。

我是 VBA 的新手,非常感谢您的帮助。

Private Sub CreateReports_Click()
    Dim x As String
    Dim y As String
    Dim StrSQL
    Dim stWhereStr As String 'Where Condition'
    Dim stSection As String 'Selection from drop down list
    Dim stfile As String

    StrSQL = "SELECT distinct [Sup] " & _
             "FROM ([OPDA ISSR - FedInvest Users by Account/Sup])"

    y = Year(date)
    Set rst = CurrentDb.OpenRecordset("OPDA ISSR - FedInvest Users by Account/Sup")

    If rst.EOF And rst.BOF Then
        MsgBox "No data available for the Ledger Process routine."
    Else
        rst.MoveFirst
        Do While Not rst.EOF
            x = rst![Sup]
            stDocName = "FedInvest - ISSR Recertification Report"
            stWhereStr = "[OPDA ISSR - FedInvest Users by Account/Sup].[SUP]= '" & x & "'"
            stfile = "MYNETWORKDRIVE" & x & " - " & y & " FedInvest InvestOne Recertification.pdf"

            DoCmd.OpenReport stDocName, acPreview, , stWhereStr
            DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, stfile
            DoCmd.Close acReport, stDocName
            rst.MoveNext
        Loop
    End If
    rst.Close
    Set rst = Nothing
End Sub

【问题讨论】:

  • 我一直让代码运行,5 分钟后,我完成了 10 份报告。不太确定这是怎么回事,但看起来代码正在继续重新创建文件。

标签: vba ms-access


【解决方案1】:

虽然您创建了一个按主管过滤的 SQL 字符串,但您打开的是整个表的记录。使用 querydef 过滤监督者,如下所示:

替换

Set rst = CurrentDb.OpenRecordset("OPDA ISSR - FedInvest Users by Account/Sup")

Dim db as DAO.Database
Dim rst = DAO.Recordset
Set db = CurrentDb
Dim qdTemp as DAO.QueryDef
Set qdTemp = db.CreateQueryDef("", StrSQL)
Set rs = qdTemp.OpenRecordSet()

【讨论】:

  • Ron,我不断收到编译错误(我认为我没有正确的参考)有什么建议吗?
猜你喜欢
  • 1970-01-01
  • 2021-05-14
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
  • 1970-01-01
  • 2016-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多