У меня есть таблица, на которой я запускаю запрос, который я экспортирую в Excel.Использование даты в CreateQueryDef
Вот пример:
Таблица: Продукты
Item | Price | Limit_Date |
-------------------------------
Carrot | 0.80 | 08/07/2015 |
Salmon | 4.30 | 01/07/2015 |
Biscuits | 2.40 | 15/12/2015 |
Milk | 1.00 | 25/06/2015 |
И я запускаю этот код в VBA:
код
Dim cdb as DAO.Database
Dim qdf as DAO.QueryDef
Set cdb = CurrentDb
Const xlsxPath = "C:\Users\Tom\Documents\Foo.xlsx"
Set qdf=cdb.CreateQueryDef("Omnomnomnom", _
"SELECT Item, Price FROM Food WHERE Limit_Date >= [pDate];")
Set qdf=Nothing
DoCmd.TransferSpreadsheet acExport, acExport, acSpreadsheetTypeExcel112Xml, "Omnomnomnom", xlsxPath, True
DoCmd.DeleteObject acQuery, "Omnomnomnom"
Это хорошо работает как это , но я хочу заменить параметр [pDate]
на твердую дату, чтобы доступ больше не запрашивал его.
Вот что я пытался до сих пор:
Использование
#01/07/2015#
Использование
DateValue("1 July 2015")
и без#
вокругИспользование
Format("01/07/2015", "dd/mm/yyyy")
и без#
вокруг
Для каждого из этих случаев запрос возвращает все в таблице, как если бы он не учитывал дату. Я уже проверил, что мое поле Limit_Date - дата/время в моей таблице. И ошибки не появляются.
Запрос работает только в том случае, если я сохраняю [pDate]
, и я вручную вводим 01/07/2015
, когда мне подскажет доступ.
Он работает сейчас, но вы можете объяснить мне, почему Access выполняет мой запрос без каких-либо проблем, как я вручную ввести 01/07/2015, когда он просит pdate? Разве это не проблема в основном то же самое? – Tom
Нет, потому что, когда вы используете параметр Parameter, механизм DB, сопоставляет тип данных с переданным параметром. Когда вы указываете значения даты жесткого кодирования, компилятор не знает, каков тип данных до момента выполнения. Именно по этой причине спецификаторы '#' инструктируют, что это тип Date, a''' для типа String и что-то еще - тип Number. При использовании '#' он строит данные в американском формате, что делается автоматически при использовании построителя запросов или параметров. Надеюсь это поможет ! – PaulFrancis