Параметры запроса при внешнем подключении к серверу sql

6

Я хочу сделать именно это: http://dailydoseofexcel.com/archives/2004/12/13/parameters-in-excel-external-data-queries/, но я хочу сделать это в Excel 2010, а также я запрашиваю SQL Сервер вместо MS Access. Является ли это возможным?

Чтобы точно понять, что я хочу получить по этой ссылке, нужно иметь параметры запроса, которые ссылаются на ячейки на листе. В настоящее время я использую VBA и событие запуска смены ячейки. Есть ли более простой способ?


ПРИМЕЧАНИЕ. Любой, кто использует метод в принятом ответе, если вы хотите, чтобы ваша электронная таблица работала на компьютере, на котором не установлен SQL Server, может оказаться полезным: https://dba.stackexchange.com/ а / 109221/46815

Дэн
источник
Что не так с вашим подходом / почему вам не нравится? Вы можете сделать то же самое, поскольку это возможно с помощью Microsoft Query - база данных * не должна иметь значения! Вы уже попробовали это, и это не сработало? Вы застряли в определенной точке?
Дейв
@DaveRook Да, я пробовал, для драйверов OLE DB, похоже, просто нет параметров. Кнопка неактивна. Мой подход хорош, но какая миссия написать кучу макросов, когда Excel может сделать это для меня. Кроме того, макросы менее надежны, поэтому, если я переместлю ячейку, мне придется перейти и вручную изменить все ссылки в коде.
Дан
Сижу с той же проблемой - у кого-нибудь есть решение?
Питер Маннингс
@PeterMunnings Я не мог найти другого пути, кроме как использовать VBA. Хотя, в конце концов, мы придерживаемся кнопки, а не триггера смены ячейки, чтобы сделать более очевидным, что за ним стоит VBA
Дэн,
Мне удалось сделать это с помощью простого запроса - вы должны использовать опцию «Из запроса Mocrosoft» в «Из других источников», но как только я попытался выполнить более сложный запрос (используя сводную таблицу), он обнаружил другие ошибки. Я попытаюсь вызвать хранимый процесс, с которым справились другие.
Питер Маннингс

Ответы:

10

Вот и я наконец понял это. Вот мои шаги.

  1. Откройте новый лист Excel (я использую Excel 2010)
  2. Нажмите на вкладку «Данные» на ленте.
  3. Нажмите на кнопку «Из других источников».
  4. Выберите «Из запроса Microsoft»
  5. Выберите источник данных
  6. Выберите любую таблицу, чтобы заполнить столбцы в окне запроса - это не имеет значения, поскольку мы переопределим ее позже - и нажмите кнопку Далее.
  7. Продолжайте нажимать дальше, пока не дойдете до кнопки «Готово», затем нажмите «Готово»
  8. Нажмите «Свойства ...»
  9. Перейдите на вкладку «Определение»
  10. Тип соединения должен иметь вид «Запрос к базе данных» - если он говорит, что вы можете добавить параметры, если нет, то кажется, что он не может добавлять параметры
  11. Обновите текст команды с помощью запроса, который вы хотите использовать для доступа к базе данных SQL - не пробовал с другими базами данных, но я уверен, что он будет работать на других
  12. Чтобы создать параметр, просто вставьте? в пункте, где. Например, выберите * из таблицы1, где col1 =?

Есть некоторые проблемы с добавлением параметров. Они работают только в последнем пункте, где. то есть, если вы используете подзапросы, сводки, cte и т. д., вы не можете добавлять параметры в них. Только в конце в финале, где пункт

  1. Дважды нажмите «ОК» - появится всплывающее окно с запросом параметра

  2. Заполните что-нибудь - мы изменим это позже

  3. Щелкните в любом месте результатов и нажмите «Свойства» на вкладке «Данные» на ленте.

  4. Нажмите на значок свойства маленькой руки

  5. Нажмите на вкладку «Определение»

  6. Теперь вы увидите, что кнопка «Параметры ...» активна. Щелкните по нему и измените параметр с запроса значения на Получить значение из следующей ячейки

Если кто-то найдет более быстрый и простой способ - я весь слух, но это работает последовательно и с действительно большими сложными запросами. Так что для нас это правильное решение

Питер Маннингс
источник
Наконец-то появился шанс сделать это, извините, что так долго! Это работает!!! Мое единственное предложение - расширить пункт 3, так как в моем случае у меня не было настроенного соединения, и я не уверен, например, между SQL Server или собственным клиентом SQL Server 11.0 и т. Д. В противном случае отличный ответ!
Дан