2017-02-16 3 views
1

У меня есть моя база данных в файле .mdb, и я хочу запросить данные, используя запрос выбора, и результат, отображаемый на листе распространения Excel (с помощью меню «Получить внешние данные»), но мне нужно запросить записывает и показывает результат на основе ввода (в котором условие), введенного пользователем в определенных ячейках (4 поля). Иногда я использую одно или два поля, где условие, или иногда я использую 3 поля, в которых условия для выбора записей, а оставшиеся поля остаются пустыми.Получите ввод параметров от пользователя в запросе Excel

Я могу написать запрос, когда пользователь вводит значения во все четыре поля, не оставляя пустым ни в одном поле, но мне нужен запрос для любого случая поиска.

SELECT * FROM P:\Indexing\Data\Services_Indexed_data.mdb .GAS S_CARD ГДЕ (S_CARD.HOUSE_NO =?) И (S_CARD.STREET_NAME =?) И (S_CARD.SUFFIX =?) И (S_CARD.FILE_NAME =?) И (S_CARD.CITY =?)

"?" будет заполняться, когда я выбираю входную ячейку в качестве параметров от пользователя. Также мне нужен запрос с LIKE-оператором, где условия. Пожалуйста, дайте мне знать, как написать запрос для этого.

+0

Является ли это допустимой строкой SQL? Используете ли вы соединение с базой данных? Вы можете попробовать просмотреть [this] (http://datapigtechnologies.com/blog/index.php/running-an-access-parameter-query-from-excel/) и понять, как подключиться к Access из Excel, где строить исходный запрос параметра и передачу значений для этих параметров из Excel в Access. – MoondogsMaDawg

+0

Да, его действительный SQL-запрос.Он работает отлично, когда я использую два/три, где условия с оператором AND/OR, но мне нужен запрос для любого случая, например, если я оставил пустое поле, тогда запрос должен возвращать значения на основе действительных параметров (условий), и это не должно быть считали пустое поле, откуда условия. Нет, я напрямую подключил файл mdb из папок. – Mahi

ответ

0

Ссылка: Я использовал внешнее соединение 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).

Это хороший вопрос, хотя и я предлагаю подождать, пока другой пользователь вздернет, нам повезет.