'****************************************************************************************
'*
'* Monthly Summary Report
'*
'****************************************************************************************
Option Explicit
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long 'API Declaration for PostMessage
Private Const WM_SYSCOMMAND = &H112 'SystemCommand Constant
Private Const SC_CLOSE = &HF060& 'CloseWindow Constant
Private Const mstrcModule = "rptMonthlySummary" 'Constant Module Name for Error Handling
Private Sub Detail_DblClick(Cancel As Integer)
DoCmd.OpenReport "rptDailySummary", acViewReport, , , acWindowNormal, _
txtDetailDate & "|" & txtDetailDate
End Sub
Private Sub Report_Load()
Dim dtmStartDate As Date
Dim dtmEndDate As Date
If Not IsNull(Me.OpenArgs) Then
If InStr(Me.OpenArgs, "|") > 0 Then
'Extract OpenArg dates passed in. Don't prompt user to select dates.
Dim varReportDates As Variant
varReportDates = Split(Me.OpenArgs, "|")
Me.txtStartDate = varReportDates(0)
Me.txtEndDate = varReportDates(1)
Exit Sub
Else
'OpenArgs not valid. Prompt user to select dates.
If MsgBox( _
Prompt:="Invalid dates. Please select the dates for this report.", _
Buttons:=vbOKCancel, _
Title:="Invalid Dates") = vbCancel Then Exit Sub
End If
End If
'Prompt user to set Begin and End Dates.
Do
ChooseDate Me.hwnd, "txtStartDate", "Enter Start Date"
If IsNull(txtStartDate) Then
PostMessage Me.hwnd, WM_SYSCOMMAND, SC_CLOSE, ByVal 0
Exit Sub
End If
ChooseDate Me.hwnd, "txtEndDate", "Enter End Date"
If IsNull(txtEndDate) Then
PostMessage Me.hwnd, WM_SYSCOMMAND, SC_CLOSE, ByVal 0
Exit Sub
End If
dtmStartDate = Me.txtStartDate
dtmEndDate = Me.txtEndDate
If dtmStartDate > dtmEndDate Then
If MsgBox( _
Prompt:="Start Date must be before End Date.", _
Buttons:=vbOKCancel, _
Title:="Date Range") = vbCancel Then
PostMessage Me.hwnd, WM_SYSCOMMAND, SC_CLOSE, ByVal 0
Exit Sub
End If
End If
Loop Until dtmStartDate <= dtmEndDate
SetRecordSource
'Rewrite textboxes
Me.txtStartDate = dtmStartDate
Me.txtEndDate = dtmEndDate
Report_Load_Exit:
Exit Sub
Report_Load_Err:
Select Case ErrHandler(Err.Number, Err.Description, , "Report_Load", _
mstrcModule)
Case Is = vbIgnore: Resume Next
Case Is = vbAbort: Resume Report_Load_Exit
Case Is = vbRetry: Resume
End Select
End Sub
Sub SetRecordSource()
Dim strSQL As String
Dim strSELECTField As String
Dim strSELECTExpr As String
Dim strSELECTParam As String
Dim strFROM As String
Dim strWHERE As String
Dim strGROUPBY As String
strSELECTField = _
"SELECT DISTINCTROW " & _
"tblMatched_Transactions.ReconDate, "
strSELECTExpr = _
"CDbl(Nz(DSum('Abs(ReconAmount )','[tblSamurai_Transactions]'," & _
"'ReconDate = #' & tblMatched_Transactions.ReconDate & '#'),0)) " & _
"AS SamuraiAmount, " & _
"CDbl(Nz(DSum('Abs(ReconAmount )','[tblSTI_Transactions]','ReconDate = #' " & _
"& tblMatched_Transactions.ReconDate & '#'),0)) " & _
"AS STIAmount, " & _
"CDbl(DCount('Nz(ReconAmount, 0)','[tblSamurai_Transactions]','ReconDate = #' " & _
"& tblMatched_Transactions.ReconDate & '#')) " & _
"AS SamuraiCount, " & _
"CDbl(DCount('Nz(ReconAmount, 0)','[tblSTI_Transactions]','ReconDate = #' " & _
"& tblMatched_Transactions.ReconDate & '#')) AS " & _
"STICount, " & _
"CDbl([STIAmount]-[SamuraiAmount]) AS AmountDiff, " & _
"CDbl([STICount]-[SamuraiCount]) AS CountDiff, "
strSELECTParam = _
"('" & txtStartDate & "') AS [Start Date], " & _
"('" & txtEndDate & "') AS [End Date] "
strFROM = _
"FROM tblMatched_Transactions "
strWHERE = _
"WHERE " & _
"tblMatched_Transactions.ReconDate >= #" & Me.txtStartDate & "# AND " & _
"tblMatched_Transactions.ReconDate <= #" & Me.txtEndDate & "# "
strGROUPBY = _
"GROUP BY tblMatched_Transactions.ReconDate;"
strSQL = strSELECTField & _
strSELECTExpr & _
strSELECTParam & _
strFROM & _
strWHERE & _
strGROUPBY
Me.RecordSource = strSQL
End Sub
Private Sub txtDARAmount_DblClick(Cancel As Integer)
'Open Daily Report
DoCmd.Close acDefault, "rptDailySummary"
DoCmd.OpenReport "rptDailySummary", acViewReport, , , acWindowNormal, _
txtDetailDate & "|" & txtDetailDate
End Sub
Private Sub txtDARCount_DblClick(Cancel As Integer)
'Open Daily Report
DoCmd.Close acDefault, "rptDailySummary"
DoCmd.OpenReport "rptDailySummary", acViewReport, , , acWindowNormal, _
txtDetailDate & "|" & txtDetailDate
End Sub
Private Sub txtDetailDate_DblClick(Cancel As Integer)
'Open Daily Report
DoCmd.Close acDefault, "rptDailySummary"
DoCmd.OpenReport "rptDailySummary", acViewReport, , , acWindowNormal, _
txtDetailDate & "|" & txtDetailDate
End Sub
Private Sub txtDiffAmount_DblClick(Cancel As Integer)
'Open Daily Report
DoCmd.Close acDefault, "rptDailySummary"
DoCmd.OpenReport "rptDailySummary", acViewReport, , , acWindowNormal, _
txtDetailDate & "|" & txtDetailDate
End Sub
Private Sub txtDiffCount_DblClick(Cancel As Integer)
'Open Daily Report
DoCmd.Close acDefault, "rptDailySummary"
DoCmd.OpenReport "rptDailySummary", acViewReport, , , acWindowNormal, _
txtDetailDate & "|" & txtDetailDate
End Sub
Private Sub txtExplanation_DblClick(Cancel As Integer)
'Open Daily Report
DoCmd.Close acDefault, "rptDailySummary"
DoCmd.OpenReport "rptDailySummary", acViewReport, , , acWindowNormal, _
txtDetailDate & "|" & txtDetailDate
End Sub
Private Sub txtLedgerAmount_DblClick(Cancel As Integer)
'Open Daily Report
DoCmd.Close acDefault, "rptDailySummary"
DoCmd.OpenReport "rptDailySummary", acViewReport, , , acWindowNormal, _
txtDetailDate & "|" & txtDetailDate
End Sub
Private Sub txtLedgerCount_DblClick(Cancel As Integer)
'Open Daily Report
DoCmd.Close acDefault, "rptDailySummary"
DoCmd.OpenReport "rptDailySummary", acViewReport, , , acWindowNormal, _
txtDetailDate & "|" & txtDetailDate
End Sub