Vba 如果窗体失去焦点,访问将停止

Vba 如果窗体失去焦点,访问将停止,vba,ms-access,Vba,Ms Access,我有一个带有代码的访问表单,它通过一个列表记录来生成报告。但是,当您运行它时,如果弹出另一个对话框或您在另一个应用程序上工作,代码将停止,表单将变得无响应。谁能给我建议一个解决办法吗。代码如下: Private Sub run_reports_Click() Dim DB As DAO.Database Dim RS As DAO.Recordset Dim MyFileName1 As String Dim MyFileName2 As String D

我有一个带有代码的访问表单,它通过一个列表记录来生成报告。但是,当您运行它时,如果弹出另一个对话框或您在另一个应用程序上工作,代码将停止,表单将变得无响应。谁能给我建议一个解决办法吗。代码如下:

Private Sub run_reports_Click()
    Dim DB As DAO.Database
    Dim RS As DAO.Recordset
    Dim MyFileName1 As String
    Dim MyFileName2 As String
    Dim mypath As String
    Dim temp As String
    Dim strFirstName As String
    Dim strLastName As String
    Dim strWeekNumber As String

    mypath = "\\perfpaup04\common\z Head Office\HO Reporting\Sales\" 'Adjust the path to your location
    strWeekNumber = Forms!frm_Sales_Reports!WeekNo

    Set DB = CurrentDb()
    Set RS = DB.OpenRecordset("tbl_BDM_Budgets", dbOpenDynaset) 'Change the table name as required

    Do While Not RS.EOF
        temp = RS("ClientAltNo") 'Change field name as required

        MyFileName1 = RS("FirstName") & " " & RS("Surname") & " - Monthly Data-Week " & strWeekNumber & ".pdf"
        MyFileName2 = RS("FirstName") & " " & RS("Surname") & " - Weekly Data-Week " & strWeekNumber & ".pdf"

        ' set form value to the ClientAltNo Name, so report will be filtered correctly
        Me.List0.Value = RS("ClientAltNo") 'cboName is the combo box name on the form

        ' set the Me.cboName as filter for your report
        DoCmd.OutputTo acOutputReport, "rpt_BDM_ReportData_Summary_Graph", acFormatPDF, mypath & MyFileName1, False
        DoCmd.OutputTo acOutputReport, "rpt_BDM_Revenue_Summary_Weekly", acFormatPDF, mypath & MyFileName2, False

        RS.MoveNext
    Loop
    RS.Close
    Set RS = Nothing
    Set DB = Nothing
End Sub

您的问题可能是由循环中执行的DoCmd语句引起的。另一种方法是创建Access报告并将其导出为PDF

DoCmd.OpenReport "ReportName", acViewPreview, , SomeFilter
DoCmd.OutputTo acOutputReport, "", acFormatPDF, MyPath & MyFilename, True
DoCmd.Close acReport, "ReportName"

尝试将命令
DoEvents
添加到
循环
行的正上方

有关更多信息,请参阅