使用两个未绑定的文本框按日期范围过滤表单记录
Posted
技术标签:
【中文标题】使用两个未绑定的文本框按日期范围过滤表单记录【英文标题】:Filter form records by date range using two unbound text boxes 【发布时间】:2021-07-19 06:24:39 【问题描述】:下午好。 我有一个连续的表单,我想允许用户通过使用表单标题中的未绑定框进行过滤。请参阅下面的表格截图: Form Design View
我可以毫无问题地过滤错误类型(未绑定:cboErrorType)和责任(未绑定:cboResponsibility),但我无法使日期范围正常工作(正在返回所选日期范围之外的记录)。请看截图:
Form - filtered
请看我下面的代码:
Private Sub cmdFilter_Click()
Dim strWhere As String
Dim lngLen As Long
Const conJetDate = "\#dd\/mm\/yyyy\#"
If Not IsNull(Me.cboErrorType) Then
strWhere = strWhere & "([ErrorType] = """ & Me.cboErrorType & """) AND "
End If
If Not IsNull(Me.cboResponsibility) Then
strWhere = strWhere & "([Decision] = """ & Me.cboResponsibility & """) AND "
End If
If Not IsNull(Me.txtStartDate) Then
strWhere = strWhere & "([Date of Error] >= " & Format(Me.txtStartDate, conJetDate) & ") AND "
End If
If Not IsNull(Me.txtEndDate) Then
strWhere = strWhere & "([Date of Error] < " & Format(Me.txtEndDate + 1, conJetDate) & ") AND "
End If
lngLen = Len(strWhere) - 5
If lngLen <= 0 Then
MsgBox "No criteria", vbInformation, "Nothing to do."
Else
strWhere = Left$(strWhere, lngLen)
'Debug.Print strWhere
Me.Filter = strWhere
Me.FilterOn = True
End If
End Sub
我正在使用以下代码删除过滤器:
Private Sub cmdResetFilter_Click()
Dim ctl As Control
For Each ctl In Me.Section(acHeader).Controls
Select Case ctl.ControlType
Case acTextBox, acComboBox
ctl.value = Null
End Select
Next
Me.FilterOn = False
End Sub
请问有人可以提出解决方案吗? 如果需要进一步的信息,请告诉我,我将尽义务。
非常感谢。
【问题讨论】:
【参考方案1】:日期格式必须是“反向”美国格式 (mm/dd/yyyy) 或 ISO 格式(也适用于 ADO)。所以试试:
Const conJetDate = "\#yyyy\/mm\/dd\#"
【讨论】:
谢谢 Gustav,它现在正在工作。非常感谢。以上是关于使用两个未绑定的文本框按日期范围过滤表单记录的主要内容,如果未能解决你的问题,请参考以下文章