2016-07-13 5 views
0

В MS Access 2010 я пытаюсь объявить и инициализировать переменную в запросе, а затем отобразить содержимое этой переменной. Причиной этого является использование параметра в более сложном запросе как часть фильтра. Обратите внимание, что для этого конкретного случая эта задача должна выполняться в объекте запроса, а не в VBA. Вот код до сих пор:инициализировать параметр в запросе MS Access

 
PARAMETERS @Date DATE; 
SELECT TOP 1 FORMAT(LastUpdated, "yyyy-mm-dd") AS @Date FROM Table1 GROUP BY FORMAT(LastUpdated, "yyyy-mm-dd") ORDER BY FORMAT(LastUpdated, "yyyy-mm-dd") DESC; 
SELECT @Date; 

Это приводит к сообщению об ошибке: «символы найдены после окончания SQL заявления.»

Если это можно изменить для работы, последняя строка кода будет заменена более сложным запросом, который должен использовать @Date в фильтре. Другое требование состоит в том, что оно должно содержаться в одном объекте запроса.

+2

Запрос доступа не является хранимой процедурой, это похоже на представление. Вам нужно будет интегрировать вышеуказанный оператор, а остальные - в один оператор SELECT. – Andre

ответ

1

В Access вам не нужно использовать параметры префикса @. Параметры выводятся как любой столбец, который не может быть разрешен. Поэтому, если в вашей таблице нет столбца date, то для «объявления» параметра достаточно использовать date. Однако, возможно, что-то вроде p_date может отделить его от типа данных DATETIME/DATE

Я не знаю, что именно вы ожидаете с этим

FORMAT(LastUpdated, "yyyy-mm-dd") AS @Date 

Это, кажется, пытается присвоить псевдоним FORMAT(LastUpdated, "yyyy-mm-dd"), как значение параметра @Date?

Запрос доступа не может возвращать несколько наборов результатов, поэтому ваш SELECT @Date; в конечном итоге вызывает «символы, найденные после завершения инструкции SQL». сообщение об ошибке.

Смежные вопросы