我有一个简单的访问表单与未绑定的文本框,用于搜索具有匹配日期的记录,结果显示在子窗体中。后端数据库存储在通过ODBC连接(SQL Server Native Client 10.0)访问的SQL Express 2008实例中。客户端是Access 2007,在64位Windows 7专业版上运行。访问类型与SQL Server后台日期字段不匹配
当用户单击窗体上的搜索按钮时,将执行以下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后端中的数据类型[日期]字段是日期时间,和上述代码失败上突出显示的行以上的错误,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'
我在做什么错?
只是刚刚开始测试这个,但是完美的工作。非常感谢。我是新来的访问,但用SQL开发了多年,我发现访问似乎有很多像这样的小怪癖。 – Bryan