Ссылка: Я использовал внешнее соединение MS Query из Excel для связи с моим файлом .accdb (я знаю, что это не то же самое, что и у вас, но это не должно иметь большого значения). Затем я открыл меню «Свойства внешних данных» и нажал кнопку справа от имени подключения, чтобы открыть окно «Свойства подключения». Я перешел на вкладку «Определение» и выбрал кнопку «Параметры» внизу и использовал опцию «Получить значение из следующей ячейки» для ссылки на ячейку ввода.
Однако я также не могу понять, как заставить Excel создать динамическое предложение WHERE, основанное на том, являются ли ваши опорные ячейки параметров нулевыми.
Решение: Я бы рекомендовал построение запроса параметров в Access и расширение вашего ИНЕКЕ для учета каждой перестановки нулевых значений в параметрах. Это будет огромная строка, которую трудно читать и форматировать, но она должна управляться в графическом интерфейсе Access. Например, при использовании только два из ваших параметров HOUSE_NO и STREET_NAME (типов данных может быть неправильным):
PARAMETERS [HOUSE_NO] Text (255), [STREET_NAME] Text (255);
SELECT * FROM S_CARD
WHERE (([HOUSE_NO] Is Not Null) AND (S.CARD.HOUSE_NO Like [HOUSE_NO])
AND ([STREET_NAME] Is Not Null) AND (S.Card.STREET_NAME Like [STREET_NAME]))
OR (([HOUSE_NO] Is Null) AND ([STREET_NAME] Is Not Null)
AND (S.Card.STREET_NAME Like [STREET_NAME]))
OR (([HOUSE_NO] Is Not Null) AND (S.Card.HOUSE_NO Like [HOUSE_NO])
AND ([STREET_NAME Is Null))
OR (([HOUSE_NO] Is Null) AND ([STREET_NAME] Is Null));
Вы должны были бы сделать OR
для каждой перестановки параметров, которые остались пустыми, и как запрос должен верните эти результаты. Затем вам нужно будет написать процедуру VBA для подключения к Access, открыть запрос параметра, передать параметры, выполнить запрос и экспортировать в файл excel. Это намного больше работы. Для получения справки вы можете увидеть часть процесса here, но в нем рассматриваются запросы действий вместо выбора и не копируются в excel.
Поскольку Excel, похоже, не указывает параметры, похоже, нет способа проверить, являются ли ячейки ввода пустыми и соответственно отрегулировать предложение WHERE. Когда я попытался использовать имена из меню «Параметры» в Excel [PARAMETER 1]
и [PARAMETER 2]
в тексте команды на вкладке «Определение», он создал новые параметры (# 3, # 4).
Это хороший вопрос, хотя и я предлагаю подождать, пока другой пользователь вздернет, нам повезет.
Является ли это допустимой строкой SQL? Используете ли вы соединение с базой данных? Вы можете попробовать просмотреть [this] (http://datapigtechnologies.com/blog/index.php/running-an-access-parameter-query-from-excel/) и понять, как подключиться к Access из Excel, где строить исходный запрос параметра и передачу значений для этих параметров из Excel в Access. – MoondogsMaDawg
Да, его действительный SQL-запрос.Он работает отлично, когда я использую два/три, где условия с оператором AND/OR, но мне нужен запрос для любого случая, например, если я оставил пустое поле, тогда запрос должен возвращать значения на основе действительных параметров (условий), и это не должно быть считали пустое поле, откуда условия. Нет, я напрямую подключил файл mdb из папок. – Mahi