Как добавить параметры для запроса внешних данных в Excel, который не может быть отображен графически?

32

Я часто использую MS Excel Get External Data для создания простых отчетов - запуск запросов к базам данных и хорошее отображение в Excel. Отличные функции Excel, такие как фильтрация и сводные таблицы, а также знакомый интерфейс для пользователей, делают это достаточно хорошо для этого. Однако одно ограничение с Microsoft Query заключается в том, что вы не можете добавлять параметры к запросам, которые невозможно отобразить графически, что значительно ограничивает SQL, который вы можете написать.

Есть ли какое-либо решение ошибки? Параметры не разрешены в запросах, которые невозможно отобразить графически?

Теги:
excel
ms-query
excel-2007

4 ответа

5
Лучший ответ

Если у вас есть Excel 2007, вы можете написать VBA для изменения подключений (т.е. внешних запросов данных) в рабочей книге и обновления свойства CommandText. Если вы просто добавили ?, где хотите параметр, то в следующий раз, когда вы обновите данные, он будет запрашивать значения для соединений! магия. Когда вы посмотрите на свойства соединения, кнопка "Параметры" теперь будет активной и пригодной для использования в обычном режиме.

например. Я напишу макрос, перейду через него в отладчик и сделаю его соответствующим CommandText. Как только вы это сделаете, вы можете удалить макрос - это просто средство для обновления запроса.

Sub UpdateQuery
    Dim cn As WorkbookConnection
    Dim odbcCn As ODBCConnection, oledbCn As OLEDBConnection
    For Each cn In ThisWorkbook.Connections
        If cn.Type = xlConnectionTypeODBC Then
            Set odbcCn = cn.ODBCConnection

            ' If you do have multiple connections you would want to modify  
            ' the line below each time you run through the loop.
            odbcCn.CommandText = "select blah from someTable where blah like ?"

        ElseIf cn.Type = xlConnectionTypeOLEDB Then
            Set oledbCn = cn.OLEDBConnection
            oledbCn.CommandText = "select blah from someTable where blah like ?" 
        End If
    Next
End Sub
45

Интерфейс Excel для запросов SQL Server не даст вам настраиваемых параметров. Для этого нужно создать общий запрос Microsoft, затем добавить параметры, а затем вставить свой параметризованный запрос в свойствах соединения. Ниже приведены подробные инструкции для Excel 2010:

  1. Открыть Excel
  2. Перейти на вкладку Данные
  3. В Из других источников выберите Из запроса Microsoft
  4. "Выбрать источник данных". появится окно. Выберите источник данных и нажмите ОК.
  5. Query Qizard
    1. Выберите Column: появится окно. Цель состоит в том, чтобы создать общий запрос. Я рекомендую выбрать один столбец из маленькой таблицы.
    2. Данные фильтра: просто нажмите Далее
    3. Порядок сортировки: просто нажмите Далее
    4. Закончить: просто нажмите Готово.
  6. "Импорт данных" появится окно:
    1. Нажмите кнопку Свойства....
      1. Выберите вкладку Определение
      2. В тексте команды: " section добавить предложение WHERE, которое включает параметры Excel. Важно добавить все параметры, которые вы хотите сейчас. Например, если я хочу два параметра, я мог бы добавить это:
        ГДЕ 1 =? и 2 =?
      3. Нажмите ОК, чтобы вернуться к "Импорт данных" Окно
      4. Выберите отчет сводной таблицы
      5. Нажмите ОК
    2. Вам будет предложено ввести значение параметров для каждого параметра.
    3. После ввода параметров вы будете в сводной таблице
    4. Перейдите на вкладку Данные и нажмите ссылку Свойства
      1. Перейдите на вкладку Определение
      2. В тексте команды: " раздел Вставить реальный SQL-запрос, который вы хотите, с тем же числом параметров, которое вы определили ранее.
      3. Нажмите кнопку Параметры...
        1. введите значения Prompt для каждого параметра
        2. Нажмите ОК
      4. Нажмите ОК, чтобы закрыть окно свойств
    5. Поздравляем, теперь у вас есть параметры.
  • 0
    Можете ли вы сделать это, чтобы добавить параметры в запрос SQL Server? т.е. подключение к БД SQL Server?
  • 0
    Фантастика. Я всегда задавался вопросом, как получить эти параметры там.
Показать ещё 2 комментария
23

Легкое обходное решение (не требуется VBA)

  • Щелкните правой кнопкой мыши, разверните контекстное меню "Таблица", выберите "Внешние свойства данных"
  • Нажмите кнопку "Свойства подключения" (только в подсказке)
  • Перейти к закладке "Определение"

Здесь отредактируйте SQL напрямую, добавив '?' где бы вы ни находились. Работает так же, как и раньше, за исключением того, что вы не получаете nagged.

  • 2
    Спасибо! Это отличное решение - быстрое, простое, без проблем и позволяет напрямую выбирать ячейку Excel, в которой будет храниться параметр. Я думаю, что это должен быть принятый ответ
  • 0
    Я нашел еще несколько шагов, но я нашел этот ответ наиболее полезным. Отсюда я мог поиграть с этим. Спасибо!
Показать ещё 2 комментария
-1

ДА - решение состоит в том, чтобы сохранить книгу в файле XML (например, "XML Spreadsheet 2003" ) и отредактировать этот файл как текст в блокноте! используйте функцию "ПОИСК" в блокноте, чтобы найти текст запроса и изменить свои данные на "?".

сохранить и открыть в excel, попробуйте обновить данные, а excel будет следить за параметрами.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню