Как добавить параметры во внешний запрос данных в Excel, который нельзя отобразить графически?
Я часто использую MS Excel Get External Data
для создания простых отчетов - запуск запросов к базам данных и хорошее отображение в Excel. Отличные функции Excel, такие как фильтрация и сводные таблицы, а также знакомый интерфейс для пользователей, делают это достаточно хорошо для этого. Однако одно ограничение с Microsoft Query заключается в том, что вы не можете добавлять параметры к запросам, которые невозможно отобразить графически, что значительно ограничивает SQL, который вы можете написать.
Есть ли какое-либо решение ошибки? Параметры не разрешены в запросах, которые невозможно отобразить графически?
Ответы
Ответ 1
Если у вас есть 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
Ответ 2
Интерфейс Excel для запросов SQL Server не даст вам настраиваемых параметров. Для этого нужно создать общий запрос Microsoft, затем добавить параметры, а затем вставить свой параметризованный запрос в свойствах соединения. Ниже приведены подробные инструкции для Excel 2010:
- Открыть Excel
- Перейти на вкладку Данные
- В Из других источников выберите Из запроса Microsoft
- "Выбрать источник данных". появится окно. Выберите источник данных и нажмите ОК.
- Query Qizard
- Выберите Column: появится окно. Цель состоит в том, чтобы создать общий запрос. Я рекомендую выбрать один столбец из маленькой таблицы.
- Данные фильтра: просто нажмите Далее
- Порядок сортировки: просто нажмите Далее
- Закончить: просто нажмите Готово.
- "Импорт данных" появится окно:
- Нажмите кнопку Свойства....
- Выберите вкладку Определение
- В тексте команды: " section добавить предложение WHERE, которое включает параметры Excel. Важно добавить все параметры, которые вы хотите сейчас. Например, если я хочу два параметра, я мог бы добавить это:
ГДЕ 1 =? и 2 =?
- Нажмите ОК, чтобы вернуться к "Импорт данных" Окно
- Выберите отчет сводной таблицы
- Нажмите ОК
- Вам будет предложено ввести значение параметров для каждого параметра.
- После ввода параметров вы будете в сводной таблице
- Перейдите на вкладку Данные и нажмите ссылку Свойства
- Перейдите на вкладку Определение
- В тексте команды: " раздел Вставить реальный SQL-запрос, который вы хотите, с тем же числом параметров, которое вы определили ранее.
- Нажмите кнопку Параметры...
- введите значения Prompt для каждого параметра
- Нажмите ОК
- Нажмите ОК, чтобы закрыть окно свойств
- Поздравляем, теперь у вас есть параметры.
Ответ 3
Легкое обходное решение (не требуется VBA)
- Щелкните правой кнопкой мыши, разверните контекстное меню "Таблица", выберите "Внешние свойства данных"
- Нажмите кнопку "Свойства подключения" (только в подсказке)
- Перейти к закладке "Определение"
Здесь отредактируйте SQL напрямую, добавив '?' где бы вы ни находились. Работает так же, как и раньше, за исключением того, что вы не получаете nagged.
Ответ 4
ДА - решение состоит в том, чтобы сохранить книгу в файле XML (например, "XML Spreadsheet 2003" ) и отредактировать этот файл как текст в блокноте!
используйте функцию "ПОИСК" в блокноте, чтобы найти текст запроса и изменить свои данные на "?".
сохранить и открыть в excel, попробуйте обновить данные, а excel будет следить за параметрами.