VBA OutputTo PDF также сохраняет пустые отчеты - PullRequest
0 голосов
/ 29 января 2020

Приведенный ниже код генерирует отчеты в формате PDF для супервизоров, у которых истекают сотрудники между полями StartDate и StopDate в форме. Я получаю несколько отчетов для супервизоров, у которых нет сотрудников, у которых истекает срок действия, по сути, пустые отчеты. Код также выводит правильные отчеты, содержащие данные.

Как я могу запретить OutputTo сохранять пустые отчеты?

SQL для справочного запроса (qry_Distinct_Supervisors):

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...