我有一个包含五个表(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
答案 0 :(得分:0)
虽然您创建了一个由主管过滤的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()