Использовать значение из текстового поля в качестве параметра в сквозном запросе в Access

У меня есть база данных 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. Однако, если мне нужно пойти по этому пути, любая помощь будет принята с благодарностью.


person gdekoker    schedule 08.04.2020    source источник


Ответы (1)


Как 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") & "')"
person Gustav    schedule 08.04.2020
comment
Спасибо, это не имеет большого смысла. Однако означает ли это, что мне нужно будет выполнить запрос в VBA? - person gdekoker; 08.04.2020
comment
Нет... можно оставить для дальнейшего использования; изменение будет постоянным. Просто настройте его всякий раз, когда вы планируете его использовать, и вы не уверены, что параметры были установлены должным образом. - person Gustav; 08.04.2020
comment
Большое спасибо, с вашей помощью я смог выполнить свое требование. - person gdekoker; 09.04.2020