I was advised the other night a create reports function that I could not get working required a Do While Loop. I found the code for a Do While Loop and have amended my code accordingly but I am still getting errors is there and error in this loop
Private Sub Create_Reports()
Dim rstcount As Object
Dim MyDb As Object
Dim strsql As String
Dim ReportManager As Integer
Dim ReportEmail As String
Dim NumManagers As Integer
Dim Numtstchks As Integer
Dim QdfAction As Object
DoCmd.SetWarnings False
Numtstschks = 0
DoCmd.OpenQuery "Qry001_Create_list_of_testcheck_managers", acViewNormal, acReadOnly
Set MyDb = DBEngine.Workspaces(0).Databases(0)
Set rstcount = MyDb.OpenRecordset("Qry002_Calculate_number_manager_requireing_tstchk")
rstcount.MoveFirst
NumManagers = rstcount![NUMMANtstchk]
Set rstcount = MyDb.OpenRecordset("tbl_testcheck_managers")
rstcount.MoveFirst
Do
Do While Numtstchks < (NumManagers + 1)
ReportManager = rstcount![Manager_ID]
ReportEmail = rstcount![manager_email_add]
strsql = "SELECT tbl_Testcheck.Search_No,tbl_Testcheck.User_Staff_No,tbl_Testcheck.User_Name,tbl_Testcheck.User_Forename,tbl_Testcheck.User_Surname,tbl_Testcheck.Reason,tbl_Testcheck.SQL_SCRIPT,tbl_Testcheck.QUERY_START_DATE,tbl_User.User_Location,tbl_User.User_extn,tbl_Manager.Manager_Forename, tbl_Manager.Manager_Surname, tbl_Manager.Manager_Location, tbl_Manager.Manager_extn, tbl_Manager.Manager_email_add, tbl_testcheck_managers.Manager_ID INTO tbl_ReportData FROM ((tbl_testcheck_managers INNER JOIN tbl_Manager ON tbl_testcheck_managers.Manager_ID = tbl_Manager.Manager_ID) INNER JOIN tbl_User ON tbl_Manager.Manager_ID = tbl_User.User_Manager_ID) INNER JOIN tbl_Testcheck ON tbl_User.User_Name = tbl_Testcheck.User_Name WHERE (((tbl_testcheck_managers.Manager_ID)=" & ReportManager & "));"
DoCmd.RunSQL strsql
DoCmd.OpenReport "rpt_Testcheck", acViewPreview
DoCmd.SendObject acSendReport, "rpt_Testcheck", "Snapshot Format", ReportEmail, , , "SPOC Testcheck", "Please find attached SPOC testchecks for your staff members"
DoCmd.Close acReport, "rpt_Testcheck"
DoCmd.DeleteObject acTable, "tbl_ReportData"
If Numtstchks = NumManagers Then
Exit Do
Else
rstcount.MoveNext
End If
Loop
Loop Until NumManagers = Numtstchks
End Sub
Private Sub Create_Reports()
Dim rstcount As Object
Dim MyDb As Object
Dim strsql As String
Dim ReportManager As Integer
Dim ReportEmail As String
Dim NumManagers As Integer
Dim Numtstchks As Integer
Dim QdfAction As Object
DoCmd.SetWarnings False
Numtstschks = 0
DoCmd.OpenQuery "Qry001_Create_list_of_testcheck_managers", acViewNormal, acReadOnly
Set MyDb = DBEngine.Workspaces(0).Databases(0)
Set rstcount = MyDb.OpenRecordset("Qry002_Calculate_number_manager_requireing_tstchk")
rstcount.MoveFirst
NumManagers = rstcount![NUMMANtstchk]
Set rstcount = MyDb.OpenRecordset("tbl_testcheck_managers")
rstcount.MoveFirst
Do
Do While Numtstchks < (NumManagers + 1)
ReportManager = rstcount![Manager_ID]
ReportEmail = rstcount![manager_email_add]
strsql = "SELECT tbl_Testcheck.Search_No,tbl_Testcheck.User_Staff_No,tbl_Testcheck.User_Name,tbl_Testcheck.User_Forename,tbl_Testcheck.User_Surname,tbl_Testcheck.Reason,tbl_Testcheck.SQL_SCRIPT,tbl_Testcheck.QUERY_START_DATE,tbl_User.User_Location,tbl_User.User_extn,tbl_Manager.Manager_Forename, tbl_Manager.Manager_Surname, tbl_Manager.Manager_Location, tbl_Manager.Manager_extn, tbl_Manager.Manager_email_add, tbl_testcheck_managers.Manager_ID INTO tbl_ReportData FROM ((tbl_testcheck_managers INNER JOIN tbl_Manager ON tbl_testcheck_managers.Manager_ID = tbl_Manager.Manager_ID) INNER JOIN tbl_User ON tbl_Manager.Manager_ID = tbl_User.User_Manager_ID) INNER JOIN tbl_Testcheck ON tbl_User.User_Name = tbl_Testcheck.User_Name WHERE (((tbl_testcheck_managers.Manager_ID)=" & ReportManager & "));"
DoCmd.RunSQL strsql
DoCmd.OpenReport "rpt_Testcheck", acViewPreview
DoCmd.SendObject acSendReport, "rpt_Testcheck", "Snapshot Format", ReportEmail, , , "SPOC Testcheck", "Please find attached SPOC testchecks for your staff members"
DoCmd.Close acReport, "rpt_Testcheck"
DoCmd.DeleteObject acTable, "tbl_ReportData"
If Numtstchks = NumManagers Then
Exit Do
Else
rstcount.MoveNext
End If
Loop
Loop Until NumManagers = Numtstchks
End Sub