Private Sub Command484_Click()
Dim invoicing As DAO.Database, rstContract As DAO.Recordset, rstContracts As DAO.Recordset, strSQL As String, rstName As DAO.Recordset, contractorName() As String, appExcel As Object, contractor As String
Dim lngLastDataRow As Long, fileName As String, RS2 As DAO.Recordset, qfd As DAO.QueryDef, outputFile As Workbook, wkb As Workbook, startDate() As String, invoiceNum As String
Dim oServ As Object, cProc As Variant, oProc As Object, rstMidday As DAO.Recordset, rstModifications As DAO.Recordset, intColIndex As Integer, filePath As String, coNo As String
Dim qdfSummary As DAO.QueryDef, sqltext As String, errReturnCode As String
Set invoicing = CurrentDb
Dim ExcelObj As Excel.Application, wb As Excel.Workbook
Set ExcelObj = New Excel.Application
contractor = [Forms]![Navigation Main Menu]![NavigationSubform].[Form]![NavigationSubform].[Form]![contractor].Value
If contractor = "" Then
MsgBox ("Please select a contractor!")
Else
If contractor = "All" Then
Set rstContract = invoicing.OpenRecordset("SELECT contractorID from contractor WHERE contractorName NOT LIKE 'All'")
Else
Set rstContract = invoicing.OpenRecordset("SELECT contractorID from contractor where contractorName = '" & contractor & "'")
End If
End If
Do While Not rstContract.EOF
Set rstContracts = invoicing.OpenRecordset("SELECT * FROM contracts WHERE contractorID = " & rstContract!contractorID)
rstContracts.MoveFirst
createFiles
Do While Not rstContracts.EOF
coNo = rstContracts!coNo
'to create querydef for excel reports
strSQL = "SELECT invoicesummary.tripName, invoicesummary.coNo, invoicesummary.busType, invoicesummary.startDate, invoicesummary.endDate, invoicesummary.numDays, invoicesummary.numAids, invoicesummary.dlyServiceTime, " & _
"invoicesummary.dlyaidtime, invoicesummary.baserate, invoicesummary.baseTotal, invoicesummary.aidbaserate, invoicesummary.aidbasetotal, invoicesummary.aidincrementrate, invoicesummary.aidincrementtotal, invoicesummary.incrementalrate, invoicesummary.incrementaltotal, " & _
"invoicesummary.aidTotal As 'aidTotal', invoicesummary.supplementalrate, invoicesummary.supplementalTotal, invoicesummary.fuelCostReimb, " & _
"invoicesummary.balance FROM (contractor INNER JOIN contracts ON contractor.contractorID = contracts.contractorID) INNER JOIN invoicesummary ON contracts.coNo = invoicesummary.coNo " & _
" WHERE (((invoicesummary.startDate) >= [Forms]![Navigation Main Menu]![NavigationSubform].[Form]![NavigationSubform].[Form]![invoiceStartDate]) And ((invoicesummary.endDate) <= " & _
"[Forms]![Navigation Main Menu]![NavigationSubform].[Form]![NavigationSubform].[Form]![invoiceEndDate]) And ((invoicesummary.coNo) = '" & rstContracts!coNo & _
"'))ORDER BY invoicesummary.tripName, invoicesummary.endDate;"
'to create querydef for invoice summary pdf report
sqltext = "SELECT invoicesummary.tripName, invoicesummary.startDate, invoicesummary.endDate, invoicesummary.numDays, invoicesummary.numAids, invoicesummary.busType, invoicesummary.dlyServiceTime, invoicesummary.baseTotal, invoicesummary.aidTotal, invoicesummary.incrementalTotal, invoicesummary.supplementalTotal, invoicesummary.fuelCostReimb, invoicesummary.balance, invoicesummary.dlyaidtime, invoicesummary.baserate, invoicesummary.aidbaserate, invoicesummary.aidbasetotal, invoicesummary.aidincrementrate, invoicesummary.aidincrementtotal, invoicesummary.incrementalrate, invoicesummary.incrementaltotal, invoicesummary.supplementalrate FROM (contractor INNER JOIN contracts ON contractor.contractorID = contracts.contractorID) INNER JOIN invoicesummary ON contracts.coNo = invoicesummary.coNo " & _
"WHERE (((invoicesummary.startDate) >= [Forms]![Navigation Main Menu]![NavigationSubform].[Form]![NavigationSubform].[Form]![invoiceStartDate]) And ((invoicesummary.endDate) <= [Forms]![Navigation Main Menu]![NavigationSubform].[Form]![NavigationSubform].[Form]![invoiceEndDate]) And ((invoicesummary.coNo) = [Forms]![Navigation Main Menu]![NavigationSubform].[Form]![NavigationSubform].[Form]![coNo])) " & _
"ORDER BY invoicesummary.tripName, invoicesummary.endDate;"
'determine contractor name to name Excel output and filename to export
Set rstName = invoicing.OpenRecordset("SELECT contractorName FROM contractor where contractorID = " & rstContracts!contractorID)
contractorName = split(rstName!contractorName, " ")
startDate = split([Forms]![Navigation Main Menu]![NavigationSubform].[Form]![NavigationSubform].[Form]![invoiceStartDate], "/")
If startDate(1) = "1" Or startDate(1) = "01" Then
invoiceNum = "1"
Else
invoiceNum = "2"
End If
fileName = "C:\Users\Administrator\Desktop\Final Invoices\20160" & startDate(0) & Right(startDate(2), 2) & invoiceNum & "_" & contractorName(0) & ".xlsx"
Debug.Print "Exporting contract " & coNo & " to " & fileName
If Dir(fileName) = "" Then
ExcelObj.Workbooks.Add
ActiveWorkbook.SaveAs (fileName)
End If
'delete the querydef's if they exist so we dont get an error (for instance, if the code didnt execute all the way through last time it was run)
For Each qfd In invoicing.QueryDefs
If qfd.Name = "tempQuery" Then
invoicing.QueryDefs.Delete "tempQuery"
Exit For
End If
Next
For Each qfd In invoicing.QueryDefs
If qfd.Name = "invoiceSummaryAutomation Query" Then
invoicing.QueryDefs.Delete "invoiceSummaryAutomation Query"
Exit For
End If
Next
'create querydefs to define the data for our recordsets to put in the excel files
invoicing.CreateQueryDef "tempQuery", strSQL
Set qfd = invoicing.QueryDefs("tempQuery")
qfd.Parameters("[Forms]![Navigation Main Menu]![NavigationSubform].[Form]![NavigationSubform].[Form]![invoiceStartDate]").Value = [Forms]![Navigation Main Menu]![NavigationSubform].[Form]![NavigationSubform].[Form]![invoiceStartDate]
qfd.Parameters("[Forms]![Navigation Main Menu]![NavigationSubform].[Form]![NavigationSubform].[Form]![invoiceEndDate]").Value = [Forms]![Navigation Main Menu]![NavigationSubform].[Form]![NavigationSubform].[Form]![invoiceEndDate]
Set qdfSummary = invoicing.CreateQueryDef("invoiceSummaryAutomation Query", sqltext)
'grab our invoice summary query (pertaining to current cono into query
Set RS2 = qfd.OpenRecordset(Type:=dbOpenDynaset)
'grab midday information to recordset for sheet 2 of excel report
Set rstMidday = invoicing.OpenRecordset("SELECT tripName, description, dateInfo, busType, lastUpdate FROM tripslog WHERE coNo = '" & rstContracts!coNo & "' AND midday = 1 and tripName NOT LIKE '_E%'")
'grab modification information relevant to this contract for sheet 3 of excel report
Set rstModifications = invoicing.OpenRecordset("SELECT * FROM modifications WHERE modDate >= #" & [Forms]![Navigation Main Menu]![NavigationSubform].[Form]![NavigationSubform].[Form]![invoiceStartDate] & "# AND modDate <= #" & [Forms]![Navigation Main Menu]![NavigationSubform].[Form]![NavigationSubform].[Form]![invoiceEndDate] & "# AND coNo = '" & rstContracts!coNo & "'")
RS2.MoveFirst
ExcelObj.Visible = False
ExcelObj.UserControl = True
ExcelObj.DisplayAlerts = False
ExcelObj.Workbooks.Open (fileName)
'create field names for SHEET 1 (Invoice Summary)
For intColIndex = 0 To RS2.Fields.count - 1
ExcelObj.Worksheets("Sheet1").Range("A1").Offset(0, intColIndex).Value = RS2.Fields(intColIndex).Name
Next
'append recordset data to SHEET 1
lngLastDataRow = ExcelObj.Worksheets("Sheet1").Cells.SpecialCells(xlCellTypeLastCell).Row
ExcelObj.Worksheets("Sheet1").Range("A" & CStr(lngLastDataRow + 1)).CopyFromRecordset RS2
'create field names for SHEET 2 (Midday Trip Report)
If rstMidday.RecordCount > 0 Then
For intColIndex = 0 To rstMidday.Fields.count - 1
ExcelObj.Worksheets("Sheet2").Range("A1").Offset(0, intColIndex).Value = rstMidday.Fields(intColIndex).Name
Next
'append recordset data to SHEET 2
lngLastDataRow = ExcelObj.Worksheets("Sheet2").Cells.SpecialCells(xlCellTypeLastCell).Row
ExcelObj.Worksheets("Sheet2").Range("A" & CStr(lngLastDataRow + 1)).CopyFromRecordset rstMidday
ExcelObj.Worksheets("Sheet2").Range("E2", "E1000").NumberFormat = "mm/dd/yy"
End If
'create field names for SHEET 3 (Modification Report)
If rstModifications.RecordCount > 0 Then
For intColIndex = 0 To rstModifications.Fields.count - 1
ExcelObj.Worksheets("Sheet3").Range("A1").Offset(0, intColIndex).Value = rstModifications.Fields(intColIndex).Name
Next
'append recordset data to SHEET 3
lngLastDataRow = ExcelObj.Worksheets("Sheet3").Cells.SpecialCells(xlCellTypeLastCell).Row
ExcelObj.Worksheets("Sheet3").Range("A" & CStr(lngLastDataRow + 1)).CopyFromRecordset rstModifications
End If
ExcelObj.Worksheets("Sheet1").Range("D2", "D1000").NumberFormat = "mm/dd/yy"
ExcelObj.Worksheets("Sheet1").Range("E2", "E1000").NumberFormat = "mm/dd/yy"
ExcelObj.Worksheets("Sheet1").Activate
ExcelObj.Workbooks.Close
qdfSummary.Parameters("[Forms]![Navigation Main Menu]![NavigationSubform].[Form]![NavigationSubform].[Form]![invoiceStartDate]").Value = [Forms]![Navigation Main Menu]![NavigationSubform].[Form]![NavigationSubform].[Form]![invoiceStartDate]
qdfSummary.Parameters("[Forms]![Navigation Main Menu]![NavigationSubform].[Form]![NavigationSubform].[Form]![invoiceEndDate]").Value = [Forms]![Navigation Main Menu]![NavigationSubform].[Form]![NavigationSubform].[Form]![invoiceEndDate]
qdfSummary.Parameters("[Forms]![Navigation Main Menu]![NavigationSubform].[Form]![NavigationSubform].[Form]![coNo]").Value = coNo
'generate pdf invoice summary report (for signing)
'fileName = Right(rstContracts!cono, 5) & "08162"
'filePath = "C:\Users\Administrator\Desktop\Final Invoices\" & fileName & ".pdf"
'DoCmd.OpenReport "Invoice Summary Automation", acViewReport, , [Forms]![Navigation Main Menu]![NavigationSubform].[Form]![NavigationSubform].[Form]![cono] = rstContracts!cono
'Reports![Invoice Summary Automation]![Text111] = cono
'DoCmd.OutputTo acOutputReport, "Invoice Summary Automation", acFormatPDF, filePath
RS2.Close
Set RS2 = Nothing
Set ExcelObj = Nothing
rstMidday.Close
invoicing.QueryDefs.Delete "tempQuery"
invoicing.QueryDefs.Delete "invoiceSummaryAutomation Query"
rstContracts.MoveNext
Loop
rstContract.MoveNext
Loop
ExcelObj.Workbooks.Close
End Sub