Используйте значение из текстового поля в качестве параметра в сквозном запросе в Access - PullRequest
1 голос
/ 08 апреля 2020

У меня есть база данных Firebird, где я использовал хранимую процедуру с именем SP_SALES для генерации довольно сложного отчета о продажах. Теперь я хочу объединить отчеты о продажах из нескольких БД в один отчет с помощью MS Access. В Access я создал обычный проходной запрос, действующий как связанная таблица, и буду делать это для каждой базы данных, из которой я могу легко консолидировать отчеты. Теперь моя проблема заключается в том, что в моей хранимой процедуре есть параметры FROM DATE и TO DATE. Таким образом, мой проходной запрос в Access выглядит следующим образом:

SELECT * FROM SP_SALES ('2019/01/01' , '2019/12/31')

Пользователь должен иметь возможность определить ОТ ОТ ДАТЫ и ДО ДАТЫ при извлечении моего консолидированного отчета. Итак, я создал форму пользователя, где это может быть заполнено. Пользовательская форма имеет имя frm_CONSOLIDATED_SALES, а поля с датами - txt_FROM_DATE и txt_TO-DATE соответственно. Поэтому я изменил свой запрос на доступ, чтобы он выглядел следующим образом:

SELECT * FROM SP_SALES ([Forms]![frm_CONSOLIDATED_SALES][txt_FROM_DATE] , [Forms][frm_CONSOLIDATED_SALES][txt_TO_DATE]) 

Однако при выполнении запроса я получаю ошибку TOKEN UNKNOWN. Я стараюсь не делать этого в VBA, так как не знаю, как выполнить сквозной запрос в VBA. Однако, если мне понадобится go по этому маршруту, любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 08 апреля 2020

Как Firebird должен что-то знать о вашей базе данных при получении сквозного запроса? Он не имеет ни малейшего представления о том, что означает [Forms]![frm_CONSOLIDATED_SALES][txt_FROM_DATE], кроме недопустимого синтаксиса.

Поэтому, прежде чем передавать запрос, настройте его SQL свойство на:

SELECT * FROM SP_SALES ('2019/01/01' , '2019/12/31')

используя что-то вроде:

YourQuery.SQL = "SELECT * FROM SP_SALES ('" & Format([txt_From_Date], "yyyy\/mm\/dd") & "' , '" & Format([txt_To_Date], "yyyy\/mm\/dd") & "')"
...