VBA输出PDF也在保存空白报告
下面的代码为在表单的StartDate和StopDate字段之间有员工到期的主管生成PDF报告。我收到了多份针对没有员工在该范围内到期的主管的报告,基本上是空白报告。该代码还输出包含数据的正确报告VBA输出PDF也在保存空白报告,vba,ms-access,Vba,Ms Access,下面的代码为在表单的StartDate和StopDate字段之间有员工到期的主管生成PDF报告。我收到了多份针对没有员工在该范围内到期的主管的报告,基本上是空白报告。该代码还输出包含数据的正确报告 如何防止输出保存空白报表?< /P> 用于参考查询的SQL(qry\U Distinct\U监督员): PARAMETERS StartDate DateTime, StopDate DateTime; SELECT DISTINCT qry_Base_For_All.Supervisor, qry_
如何防止输出保存空白报表?< /P> 用于参考查询的SQL(qry\U Distinct\U监督员):
PARAMETERS StartDate DateTime, StopDate DateTime;
SELECT DISTINCT qry_Base_For_All.Supervisor, qry_Base_For_All.LID, qry_Base_For_All._Status, qry_Base_For_All.LASTNAME, qry_Base_For_All.FIRSTNAME, qry_Base_For_All.[End Date]
FROM qry_Base_For_All
WHERE (((qry_Base_For_All.Supervisor) Is Not Null) AND ((qry_Base_For_All.LASTNAME) Is Not Null) AND ((qry_Base_For_All.[End Date]) Between [StartDate] And [StopDate]));
报表的SQL
SELECT DISTINCT qry_Base_For_All.L_ID, qry_Base_For_All.LASTNAME, qry_Base_For_All.FIRSTNAME, qry_Base_For_All.P_ID, qry_Base_For_All.Company, qry_Base_For_All.[End Date], qry_Base_For_All.Supervisor, qry_Base_For_All.Title
FROM qry_Base_For_All
WHERE (((qry_Base_For_All.[End Date]) Between [Forms]![frm_Bldg_Access]![StartDate] And [Forms]![frm_Bldg_Access]![StopDate]) AND ((qry_Base_For_All.Title) Like "*" & "outsource" & "*"));
VBA保存报告
Private Sub btn_Print_Report_Click()
'split report into PDFs named after supervisor and open a separate email with each report attached
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim MyFileName As String
Dim mypath As String
Dim temp As String
Dim qry As QueryDef
Dim StartDate As DAO.Parameter
Dim StopDate As DAO.Parameter
Set db = CurrentDb()
Set qry = db.QueryDefs("qry_Distinct_Supervisors")
mypath = "C:\Users\cw52450\Desktop\Test Exports\"
qry.Parameters("StartDate").Value = Forms!frm_Bldg_Access!StartDate
qry.Parameters("StopDate").Value = Forms!frm_Bldg_Access!StopDate
Set rs = qry.OpenRecordset(dbOpenSnapshot)
'populate rs
If Not (rs.EOF And rs.BOF) Then
rs.MoveLast
rs.MoveFirst
'start report generation loop
'Currenlty outputting blank reports as well as needed ones
Do While Not rs.EOF
temp = rs("Supervisor")
MyFileName = rs("Supervisor") & Format(Date, ", mmm yyyy") & ".PDF"
DoCmd.OpenReport "rpt_Expiring_Access", acViewReport, , "[Supervisor]='" & temp & "'"
DoCmd.OutputTo acOutputReport, "", acFormatPDF, mypath & MyFileName
DoCmd.Close acReport, "rpt_Expiring_Access"
DoEvents
rs.MoveNext
Loop
Else
MsgBox "There are no records in the recordset."
End If
MsgBox "Report generation complete."
Set rs = Nothing
Set db = Nothing
Set qry = Nothing
End Sub
听起来您的记录集为每个主管都有多个记录。您能否直接运行
qry\u Distinct\u Supervisors
并检查是否存在重复项?我的查询显示了多个监控项。为了解决这个问题,我必须使查找查询的WHERE部分与用于报告的查询的WHERE部分相匹配。谢谢@BankBuilderGlad,你修好了!