我有一个表单(frmReports
),其中有两个未绑定的文本框,用于输入日期。一个是FROM,一个是TO。
这些用于过滤出报告(rptAllCommissions
)。如果文本框中有值,则将进行过滤。如果没有,或者有一个日期,而不是两个日期,它将创建一个WHERE语句来打开报告。这是代码:
Private Sub cmdCommissions_Click()
Dim strDateFrom As String
Dim strDateTo As String
Dim strWhere As String
Const strcJetDate = "\#mm\/dd\/yyyy\#"
strDateFrom = "[ClosingDate]"
If IsDate(Me.txtFrom) Then
strWhere = "(" & strDateFrom & " >=" & Format(Me.txtFrom, strcJetDate) & ")"
End If
If IsDate(Me.txtTo) Then
If strWhere <> vbNullString Then
strWhere = strWhere & " AND "
End If
strWhere = strWhere & "(" & strDateFrom & " <= " & Format(Me.txtTo + 1, strcJetDate) & ")"
End If
If CurrentProject.AllReports("rptAllCommissions").IsLoaded Then
DoCmd.Close acReport, "rptAllCommissions"
End If
Debug.Print strWhere
DoCmd.OpenReport "rptAllCommissions", acViewReport, strWhere
Exit_Handler:
Exit Sub
Err_Handler:
If Err.Number <> 2501 Then
MsgBox "Error" & Err.Number & ": " & Err.Description, vbExclamation, "Cannot Open Report!"
End If
Resume Exit_Handler
End Sub
我遇到的问题是无论我尝试什么,该报告都不会根据上述例程创建的WHERE语句来过滤记录。尝试调试,它输出:
如果输入了两个日期:([ClosingDate] >=#04/01/2019#) AND ([ClosingDate] <= #05/25/2019#)
如果输入了一个日期:([ClosingDate] >=#05/13/2019#)
这对我来说似乎是正确的,但不是过滤。我到底在做什么错了?
编辑:我应该赞扬原始例程的编写者,但我终生无法找到我的原始例程。抱歉!但是最初由谁编写例程,谢谢!