У меня есть простая форма доступа с несвязанным текстовым полем, которое используется для поиска записей с соответствующей датой, а результаты отображаются в подчиненной форме.Бэкэнд-база данных хранится в экземпляре SQL Express 2008, доступ к которому осуществляется через соединение ODBC (собственный клиент SQL Server 10.0).Клиент Access 2007, работающий на 64-битной Windows 7. professional.
Когда пользователь нажимает кнопку поиска в форме, для обновления подчиненной формы выполняется следующий код 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
Тип данных в поле [Date] серверного конца SQL Server - DateTime, и приведенный выше код завершается ошибкой в выделенной строке выше с ошибкой Data type mismatch in criteria expression
.
Я попытался изменить свойство format дляtxtDate от короткой даты до общей даты, и я также изменил формат даты в строке выше, которая форматирует txtDate.Value.
Запрос SQL, содержащийся в переменной query
в приведенном выше фрагменте кода (значениепоказано ниже), отлично работает при копировании и вставке в SQL Express Management Studio.
SELECT * FROM TimesheetEntries WHERE StaffId = 14 AND [Date] = '2011/11/22 00:00:00'
Что я делаю не так?