Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA输出PDF也在保存空白报告_Vba_Ms Access - Fatal编程技术网

VBA输出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_

下面的代码为在表单的StartDate和StopDate字段之间有员工到期的主管生成PDF报告。我收到了多份针对没有员工在该范围内到期的主管的报告,基本上是空白报告。该代码还输出包含数据的正确报告

如何防止输出保存空白报表?< /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,你修好了!