MS Access;按日期过滤,至&从

时间:2018-04-04 11:25:47

标签: vba ms-access

从表格中我创建了一个分割表格,其中有两个'日期' (收件人和发件人)带有搜索按钮的文本框。

    Private Sub btnSearch_Click()
' Search Button
Call Search
End Sub

Sub Search()
Dim strCriteria, task As String

Me.Refresh
If IsNull(Me.txtDateFrom) Or IsNull(Me.txtDateTo) Then
    MsgBox "Please enter the date range", vbInformation, "Date Range Required"
    Me.txtDateFrom.SetFocus
Else
    strCriteria = "([DateRecorded] >= #" & Me.txtDateFrom & "# And [DateRecorded] <= #" & Me.txtDateTo & "#)"
    task = "select * from tblNCRs where (" & strCriteria & ") order by [DateRecorded]"
    DoCmd.ApplyFilter task
End If

End Sub

选择日期并搜索代码似乎有效,但它会随机提取结果。 (我相信这是因为代码可能使用美国日期格式?因此我使用英国风格,DD / MM / YYYY)

如何才能使其正常工作?

谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用:

strCriteria = "[DateRecorded] >= #" & Format(Me.txtDateFrom, "yyyy\/mm\/dd")  & "# And [DateRecorded] <= #" & Format(Me.txtDateTo, "yyyy\/mm\/dd") & "#"

答案 1 :(得分:0)

替代Gustav的答案,您可以使用表单上的值作为参数:

strCriteria = "[DateRecorded] >= Forms!MyFormName!txtDateFrom And [DateRecorded] <= Forms!MyFormName!txtDateTo"

这样做的另一个好处是,当您更改其中一个搜索参数时,重新查找表单就足以使用更新的参数。