【发布时间】:2026-02-06 02:00:01
【问题描述】:
我有一个带有未绑定文本框的简单访问表单,用于搜索具有匹配日期的记录,结果显示在子表单中。后端数据库存储在 SQL Express 2008 实例中,可通过 ODBC 连接 (SQL Server Native Client 10.0) 访问。客户端是 Access 2007,在 64 位 Windows 7 专业版上运行。
当用户点击表单上的搜索按钮时,会执行以下 VBA 代码来更新子表单。
Private Sub UpdateSfmQuery()
Dim query As String
If IsDate(txtDate.Value) And IsNumeric(cboStaff.Value) Then
query = "SELECT * FROM TimesheetEntries " & _
"WHERE StaffId = " & cboStaff.Value & " " & _
"AND [Date] = '" & _
Format(txtDate.Value, "YYYY/MM/DD HH:MM:SS") & "' "
Else
query = "SELECT * FROM TimesheetEntries WHERE 0 = 1;"
End If
frmTimesheetUpdateSfm.Form.RecordSource = query '<--- Fails here
End Sub
SQL Server 后端 [Date] 字段中的数据类型是 DateTime,上面的代码在上面突出显示的行上失败,错误为 Data type mismatch in criteria expression。
我尝试将 txtDate 的格式属性从短日期更改为一般日期,并且我还修改了上面一行中格式化 txtDate.Value 的日期格式。
上述代码摘录中的变量query 中包含的SQL 查询(值如下所示),在复制并粘贴到SQL Express Management Studio 时完美执行。
SELECT * FROM TimesheetEntries WHERE StaffId = 14 AND [Date] = '2011/11/22 00:00:00'
我做错了什么?
【问题讨论】:
标签: ms-access sql-server-express vba date-format type-mismatch