Если ваш запрос действительно является одним запросом (в отличие от нескольких операторов SQL), то вы можете подшутить:
Создайте обычную таблицу запросов Excel, которая указывает на правильный источник данных и включает необходимое количество параметров, но выбирает что-то не относящееся к делу (например, select 1,2,3,4,5 from existing_table where existing_field = [param1] and existing_field = [param2]
).
Теперь у вас есть шаблон запроса с двумя параметрами. Свяжите их с ячейками на листе.
Теперь выберите ячейку в результатах запроса шаблона и выполните эту команду:
activecell.querytable.commandtext = "sql text"
В sql text
заменить параметры на ?
. Нет declare
s или переменных, просто select
. Параметры будут указываться по позиции, а не по имени. Это означает, что если один и тот же параметр используется в запросе несколько раз, это разные параметры, которые необходимо добавить в шаблон отдельно.
Вы знаете, что у вас есть рабочая таблица запросов, которая будет принимать параметры и одновременно выполнять сложный запрос, который "не может быть представлен графически".
Дело в том, что Excel может выполнять сложный запрос с параметрами, но Microsoft Query не справляется с этим.
Обратите внимание, что попытка изменить эту таблицу запросов с помощью Microsoft Query приведет к ее разрушению. Возможно, вы захотите сохранить свой SQL где-нибудь еще на случай, если вы сделаете это рассеянно.