Выполнить SQL-запрос с параметром из Excel 2007
У меня есть запрос в таблице Excel. Я следовал за этим, чтобы сделать это.
Но как я могу добавить параметр из ячейки в мой запрос?
Я ищу способ сделать это:
Cell.A2 не работает. Но как я могу добавить что-то подобное, чтобы содержимое ячейки использовалось в моем запросе?
Не знаю, почему MS сделал это настолько сложным, вам придется использовать Microsoft Query.
Нажмите «Далее», не выбирайте никаких критериев фильтрации, выберите сортировку по критериям, нажмите «Далее». Теперь нажмите View / Edit в MS Query вместо того, чтобы выбрать Return to Excel
Это плагин Excel, который добавляет ядро базы данных и SQL IDE в Excel.
Это позволяет вам выполнять операции SQL над всем, что помечено как таблица в Excel. Вы можете выполнять запросы по всем книгам, а также использовать таблицы из внешней базы данных (SQL Server / Sqlite / Postgres / Access / MySql) в одном запросе.
Он имеет подсветку синтаксиса SQL, завершение операторов и кучу других интересных вещей. Он использует SQLite под капотом, но может также использовать внешние механизмы обработки данных для обработки данных.
Я взимаю плату за это, но есть бесплатная пробная версия, которую вы можете использовать в течение 30 дней. Это называется ThingieQuery.
Извините за штекер, надеюсь, это не слишком неуместно.
Выполнить SQL-запрос с параметром из Excel 2007
У меня есть запрос в таблице Excel. Я следовал за этим, чтобы сделать это.
Но как я могу добавить параметр из ячейки в мой запрос?
Я ищу способ сделать это:
КлеткаА2 не работает. Но как я могу добавить что-то подобное, чтобы содержимое ячейки использовалось в моем запросе?
3 ответа 3
Не знаю, почему MS сделал это настолько сложным, вам придется использовать Microsoft Query.
Нажмите «Далее», не выбирайте никаких критериев фильтрации, выберите сортировку по критериям, нажмите «Далее». Теперь нажмите View/Edit в MS Query вместо того, чтобы выбрать Return to Excel
Это плагин Excel, который добавляет ядро базы данных и SQL IDE в Excel.
Это позволяет вам выполнять операции SQL над всем, что помечено как таблица в Excel. Вы можете выполнять запросы по всем книгам, а также использовать таблицы из внешней базы данных (SQL Server/Sqlite/Postgres/Access/MySql) в одном запросе.
Он имеет подсветку синтаксиса SQL, завершение операторов и кучу других интересных вещей. Он использует SQLite под капотом, но может также использовать внешние механизмы БД для обработки данных.
Я взимаю плату за это, но есть бесплатная пробная версия, которую вы можете использовать в течение 30 дней. Это называется ThingieQuery.
Извините за штекер, надеюсь, это не слишком неуместно.
как передать параметры для запроса в SQL (Excel)
2 ответов
Это зависит от базы данных, к которой вы пытаетесь подключиться, метода, с помощью которого вы создали соединение, и версии Excel, которую вы используете. (Также, скорее всего, версия соответствующего драйвера ODBC на вашем компьютере.)
в следующих примерах используются SQL Server 2008 и Excel 2007 на моем локальном компьютере.
когда я использовал Microsoft Query (то же место, что и мастер подключения к данным), я смог создать параметры, указать отображаемое имя для них и вводить значения каждый раз, когда запрос был запущен. Вывод свойств соединения для этого соединения, параметры. кнопка включена, и параметры могут быть изменены и использованы, как я думаю, вы хотите.
Я также смог сделать это с базой данных Access. Кажется разумным, что Microsoft Query можно использовать для создания параметризованных запросов, попадающих в другие типы баз данных, но я не могу легко проверить это прямо сейчас.
этот пост достаточно стар, что этот ответ, вероятно, будет мало полезен для OP, но я потратил вечность, пытаясь ответить на этот же вопрос, поэтому я подумал, что обновлю его своими выводами.
этот ответ предполагает, что у вас уже есть рабочий SQL-запрос в документе Excel. Есть много руководств, которые покажут вам, как это сделать в интернете, и много, которые объясняют, как добавить параметризованный запрос к одному, за исключением того, что ни один из них не работает для существующий, OLE DB запрос.
Итак, если вы, как и я, получили устаревший документ Excel с рабочим запросом, но пользователь хочет иметь возможность фильтровать результаты на основе одного из полей базы данных, и если вы, как и я, не являетесь ни Excel, ни SQL-гуру, это может помочь вам.
большинство веб-ответов на этот вопрос, похоже, говорят, что вы должны добавить «?»в вашем запросе, чтобы получить Excel, чтобы запросить у вас пользовательский параметр или разместить приглашение или ссылка на ячейку в [скобках], где должен быть параметр. Это может работать для запроса ODBC, но, похоже, не работает для OLE DB, возвращая «нет значения для одного или нескольких требуемых параметров» в первом экземпляре и «недопустимое имя столбца» xxxx «» или «неизвестный объект» xxxx «» в последних двух. Аналогично, использование мифических кнопок «параметры. » или «редактировать запрос. » также не является опцией, поскольку в этом случае они кажутся постоянно серыми. (Для справки, я использую Excel 2010, но с книгой Excel 97-2003 (*.xls))
однако мы можем добавить ячейку параметра и кнопку с простой процедурой для программного обновления текста запроса.
закройте свойства соединения и нажмите Alt+F11, чтобы открыть редактор VBA. Если вы еще не на нем, щелкните правой кнопкой мыши на названии листа, содержащего вашу кнопку в окне «проект», и выберите»Просмотреть код». Вставьте следующий код в окно кода (копирование рекомендуется, так как одинарные/двойные кавычки рискованны и необходимы).
заменить » DB_TABLE_NAME.Field_Name » и «имя соединения» (в двух местах) с вашими значениями (двойные кавычки и знак пробела и равенства должны быть включены).
сохранить и закрыть редактор VBA.
введите свой параметр в соответствующую ячейку.
щелкните правой кнопкой мыши кнопку, чтобы назначить суб RefreshQuery в качестве макроса, затем нажмите кнопку. Запрос должен обновлять и отображать правильные данные!
этот ответ был создан с помощью «BaconBits» datapig, где я нашел базовый код для обновления запроса.
Как сформировать SQL запросы в Excel?
Представьте себе ситуацию, Вы получили целевую выборку из одной базы данных, но для полноты картины, как всегда, нужны дополнительные данные. Проблема может быть в том, что нужная информация хранится в другой базе данных и возможности создать на ней свою таблицу нет, подключиться используя link тоже нельзя, да и количество элементов, по которым нужно получить данные, несколько больше, чем допустимое на данном источнике. Вот и получается, что возможность написать SQL запрос и получить нужные данные есть, но написать придется не один запрос, а потом потратить время на объединение полученных данных.
Выйти из подобной ситуации поможет Excel.
Уверен, что ни для кого не секрет, что MS Excel имеет встроенный модуль VBA и надстройки, позволяющие подключаться к внешним источникам данных, то есть по сути является мощным инструментом для аналитики, а значит идеально подходит для решения подобных задач.
Для того чтобы обойти проблему, нам потребуется таблица с целевой выборкой, в которой содержатся идентификаторы, по которым можно достаточно корректно получить недостающую информацию (это может быть уникальный идентификатор, назовем его ID, или набор из данных, находящихся в разных столбцах), ПК с установленным MS Excel, и доступом к БД с недостающей информацией и, конечно, желание получить ту самую информацию.
Создаем в MS Excel книгу, на листе которой размещаем таблицу с идентификаторами, по которым будем в дальнейшем формировать запрос (если у нас есть уникальный идентификатор, для обеспечения максимальной скорости обработки таблицу лучше представить в виде одного столбца), сохраняем книгу в формате *.xlsm, после чего приступаем к созданию макроса.
Через меню «Разработчик» открываем встроенный VBA редактор и начинаем творить.
Sub job_sql() — Пусть наш макрос называется job_sql.
Пропишем переменные для подключения к БД, записи данных и запроса:
Опишем параметры подключения:
Объявим процедуру свойства, для присвоения значения:
Вот теперь можно приступать непосредственно к делу.
Как вы уже поняли конечное значение i=1000 здесь только для примера, а в реальности конечное значение соответствует количеству строк в Вашей таблице. В целях унификации можно использовать автоматический способ подсчета количества строк, например, вот такую конструкцию:
Тогда открытие цикла будет выглядеть так:
Как я уже говорил выше MS Excel является мощным инструментом для аналитики, и возможности Excel VBA не заканчиваются на простом переборе значений или комбинаций значений. При наличии известных Вам закономерностей можно ограничить объем выгружаемой из БД информации путем добавления в макрос простых условий, например:
Итак, мы определились с объемом и условиями выборки, организовали подключение к БД и готовы формировать запрос. Предположим, что нам нужно получить информацию о размере ежемесячного платежа [Ежемесячный платеж] из таблицы [payments].[refinans_credit], но только по тем случаям, когда размер ежемесячного платежа больше 0
Если значений для формирования запроса несколько, соответственно прописываем их в запросе:
В целях самоконтроля я обычно записываю сформированный макросом запрос, чтобы иметь возможность проверить его корректность и работоспособность, для этого добавим вот такую строчку:
Excel sql запрос с параметром
Lania, почитайте вот эту статью, думаю это именно то, что вам нужно.
Lania, почитайте вот эту статью, думаю это именно то, что вам нужно.
Сообщение Lania, почитайте вот эту статью, думаю это именно то, что вам нужно.
| krosav4ig | Дата: Пятница, 05.02.2016, 14:46 | Сообщение № 12 | |
|






