MS Access VBA SQL SELECT * INTO tempTbl WHERE Stuff="" И OtherStuff МЕЖДУ Диапазоном дат
У меня есть форма с одним текстовым полем, двумя полями со списком (раскрывающиеся списки) и двумя текстовыми полями с масками ввода для mm/dd/yyyy 99/99/0000;0;_
Я пытаюсь использовать все эти поля в качестве фильтров для подчиненной формы. У меня есть элементы управления для запуска после обновления и запуска сабвуфера, который создает SELECT * INTO
Строка SQL для временной таблицы, которая затем sourceobject'ed
назад к subform
,
В коде, который я имею для каждого элемента управления, у меня есть код, строящий фрагмент инструкции Where для финального sql
, фрагмент растет по мере необходимости, помечен как "Фильтр"
Какой-то другой незавершенный кодекс....
If Not IsNull(txtDateFrom) Then
If i > 1 Then Filter = Filter & " AND " & "([Date_LastSaved] >= " & Me.txtDateFrom & ")" & " And " & "([Date_LastSaved] <= " & Me.txtDateTo & ")"
End If
Dim sql As String
sql = "SELECT * INTO tmpTable FROM tblReview"
If Not IsNull(Filter) Then
sql = sql & " WHERE " & Filter
End If
Моя проблема и вопрос в том, что я тестирую эту конкретную ситуацию, где будет Filter = Filter & " AND " & "DATE_STUFF"
где последний sql выглядит как...
SELECT * INTO tmpTable FROM tblReview WHERE ReviewStatus = 'Quoted' AND ([Date_LastSaved] >= 09/12/2018) And ([Date_LastSaved] <= 10/16/2018)
который должен иметь некоторый результат с данными испытаний. Тем не менее, tmpTable пуст.
Это происходит только тогда, когда я применяю критерии диапазона дат.
Я старался BETWEEN
но не смог записать синтаксис.
Любое понимание высоко ценится, спасибо!
ОБНОВЛЕНИЕ: Ответ:
If i > 1 Then Filter = Filter & " AND " & "([Date_LastSaved] >= #" & Me.txtDateFrom & "#)" & " And " & "([Date_LastSaved] <= #" & Me.txtDateTo & "#)"
1 ответ
Если вы хотите использовать даты, они должны быть указаны. Если вы просто скажете 16.10.08, то вы поделите целое число 10 на 16 к 2018 году, что даст целое ноль. Затем он преобразует даты в целое число, чтобы выполнить сравнение, которое даст намного большее число, и, таким образом, вы не получите строк.
Любое тестирование даты всегда должно выполняться с использованием типов даты, а не строк. Я думаю, что в msaccess вы можете заключить его в #, но не уверен. Просто исследуй это.