首页 > 解决方案 > 访问日期之间的 VBA SQL 查询搜索

问题描述

我有一些 VBA 代码,它从文本框中的两个日期选择器值中获取日期和日期字段。

但是,在两个日期之间搜索时,我会收到“输入参数值”提示,要求输入。

Dim SQLAllReject As String

Dim strDateFrom As String
Dim strDateTo As String

strDateFrom = Format(txtDate.Value, "mm/dd/yyyy")
strDateTo = Format(txtDateTo.Value, "mm/dd/yyyy")

当直接在查询设计向导中运行时,日期之间的搜索工作正常:

WHERE (((XXXXXXXXXXXXXXXXXXXX.Date) Between #10/1/2021# And #10/27/2021#))

这里有什么问题?如何强制 Access/VBA 采用我指定的日期并在它们之间搜索而不显示“输入参数值”提示?

当我调试查询并逐步执行时,它给出的日期与在查询设计视图中运行它的日期完全相同。

仅供参考,如果我使用一个日期和 LIKE 运算符,这很好用。

SQLAllReject = "SELECT dbo_vw_busobj_file_rejections_load_access_temp5_copy.HashKey AS [ID], dbo_vw_busobj_file_rejections_load_access_temp5_copy.Reject_Date AS [Date], " & _
    "FROM dbo_vw_busobj_file_rejections_load_access_temp5_copy " & _
    "WHERE (((dbo_busobj_file_rejections_load_access_temp5_copy.Reject_Date) Between #" & strDateFrom & "# And #" & strDateTo & "#)) " & _
    "ORDER BY dbo_vw_busobj_file_rejections_load_access_temp5_copy.Reject_Date DESC;"

标签: sqlvba

解决方案


好的,我以某种方式修复了它......查询字符串试图从视图而不是表中进行选择,并且由于某种奇怪的原因它导致了参数提示。

我已将 dbo_vw_busobj_file_rejections_load_access_temp5_copy 更改为 dbo_busobj_file_rejections_load_access_temp5_copy 表,并在从文本框中选择日期时进行了一些字符串到日期的转换后设法使其工作。


推荐阅读