Параметры sql запросах excel

Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Еще…Меньше

При запросе данных в Excel можно использовать входное значение ( параметр), чтобы указать что-то о запросе. Для этого нужно создать запрос с параметрами в Microsoft Query.

  • Параметры используются в предложении WHERE запроса— они всегда работают в качестве фильтра для извлечения данных.

  • Параметры могут запрашивать у пользователя входное значение при запуске или обновлении запроса, использовать константы в качестве входного значения или использовать содержимое указанной ячейки в качестве входного значения.

  • Параметр является частью запроса, который он изменяет, и его нельзя повторно использовать в других запросах.

Примечание    Если вы хотите создать запросы с параметрами другим способом, см. создание запроса с параметрами (Power Query).

Последовательность действий

  1. Щелкните Данные > Получить & Преобразование данных > Получить данные > из других источников > из Microsoft Query.

  2. Следуйте шагам мастера запросов. На экране Мастер запросов — готово выберите Просмотр данных или изменение запроса в Microsoft Query и нажмите кнопку Готово. Откроется окно Microsoft Query и отобразит запрос.

  3. Нажмите кнопку> SQL. В диалоговом SQL найдите предложение WHERE — строку, которая начинается со слова WHERE, обычно в конце SQL кода. Если предложение WHERE не существует, добавьте его, введя WHERE в новой строке в конце запроса.

  4. После where введите имя поля, оператор сравнения (=, <, >, LIKE и т. д.) и одно из следующих данных:

    • Для запроса generic parameter (?) введите вопросии (?). В подсказке, которая появляется при запуске запроса, не отображается полезная фраза.

      SQL ms Query, в котором подчеркнуто предложение WHERE

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

      SQL ms Query, в котором подчеркнуто предложение WHERE

  5. Завершив добавление условий с параметрами в предложение WHERE, нажмите кнопку ОК, чтобы запустить запрос. Excel запрос на в качестве значения для каждого параметра, Microsoft Query отобразит результаты.

  6. Когда вы будете готовы загрузить данные, закройте окно Microsoft Query, чтобы вернуться к Excel. Откроется диалоговое окно Импорт данных.

    Диалоговое окно импорта данных в Excel

  7. Чтобы просмотреть параметры, нажмите кнопку Свойства. Затем в диалоговом окне Свойства подключения на вкладке Определение нажмите кнопку Параметры.

    Диалоговое окно "Свойства подключения"

  8. В диалоговом окне Параметры отображаются параметры, используемые в запросе. Выберите параметр в области Имя параметра, чтобы просмотреть или изменить параметр How value is obtained. Вы можете изменить запрос параметра, ввести определенное значение или указать ссылку на ячейку.

    Диалоговое окно параметра MS Query

  9. Нажмите кнопку ОК, чтобы сохранить изменения и закрыть диалоговое окно Параметры, а затем в диалоговом окне Импорт данных нажмите кнопку ОК, чтобы отобразить результаты запроса Excel.

Теперь в книге есть запрос с параметрами. При запуске запроса или обновлении подключения к данным Excel проверяет параметр, чтобы завершить предложение WHERE запроса. Если параметр запросит значение, Excel отобразит диалоговое окно Введите значение параметра для сбора входных данных. Вы можете ввести значение или щелкнуть ячейку со значением. Вы также можете указать, что указанное значение или ссылка всегда должны использоваться, а при использовании ссылки на ячейку можно указать, что Excel должно автоматически обновлять подключение к данным (то есть повторно выполнить запрос) при внесении изменений в указанную ячейку.

См. также

Настройка запроса с параметрами

Создание запроса с параметрами (Power Query)

Создание раскрывающегося списка

Нужна дополнительная помощь?

1 Power Query. Знакомство с Power Query В этом уроке мы познакомимся в Power Query.
Зачем нужен Power Query
Как установить Power Query
Как его Настроить
Как изменить запрос 2 Power Query. Подключение XML В этом уроке мы научимся подключаться к файлам в формате XML и импортировать эти данные в Excel. 3 Power Query. Уникальные значения двух столбцов В этом уроке мы получим уникальные значения из двух столбцов таблицы. 4 Power Query. Импорт таблиц PDF Импорт таблиц из файла PDF, импорт таблиц из множества PDF файлов с объединением в один датасет. 5 Power Query. Собрать разбитую строку В этом практическом уроке мы научимся соединять разбитую строку. Этот пример взят из реальной практики одного из спонсоров канала. 6 Power Query. Пивот со счетом В этом уроке мы создадим пивот, в котором будут пронумерованы столбцы. 7 Power Query. Минимальное значение в диапазоне В этом уроке мы найдем минимальное значение в диапазоне строк. 8 Power Query. Нарастающий итог 2 В этом уроке мы изучим еще один способ сделать нарастающий итог в Power Query. 9 Power Query. Нарастающий итог 3 В этом уроке мы разберем еще один способ выполнить нарастающий итог в Power Query. 10 Power Query. Прирост населения Китая В этом уроке мы сравним прирост населения Китая с приростом населения мира в целом за последние 200 лет. 11 Power Query. Повторяющиеся значения в строке В этом уроке разберем как определить есть ли в строке повторения. 12 Power Query. Таблица навигации по функциям М В этом уроке вы узнаете как создать таблицу навигации по всем функциям языка Power Query. 13 Power Query. Удалить запросы и модель данных из книги Разберем как быстро удалить все запросы и модель данных из текущей книги. 14 Power Query. Открыть еще 1 Excel и еще 3 трюка В этом видео я покажу как открыть еще 1 файл Excel, если у вас уже запущен Power Query. 15 Power Query. Подключиться к ZIP архиву Пользовательская функция для подключения к zip файлу. Подключимся к txt файлу, который находится в zip архиве. 16 Power Query. Импорт Word Импортируем таблицу из документа Word. Для спонсоров разберем импорт таблицы с объединенными ячейками. 17 Power Query. Фильтрация списком В этом уроке мы хотим отфильтровать таблицу при помощи списка, например, хотим получить продажи определенных товаров. 18 Power Query. Пользовательская функция Switch В этом уроке мы создадим пользовательскую функцию Switch. 19 Power Query. Информация о формате, Чтение zip В этом уроке мы узнаем как получить информацию о формате ячеек при помощи Power Query. 20 Power Query. Импорт данных из gz В этом уроке мы разберем как импортировать файл в формате gz. 21 Power Query. Удалить лишние пробелы, Text.Split В этом уроке мы научимся удалять лишние пробелы в текстовом столбце таблицы. 22 Power Query. Параметры в SQL-запросе Вы хотите, чтобы в ваш SQL-запрос подставлялось значение из параметра, источником которого является ячейка с листа Excel. 23 Power Query. Параметры в SQL-запросе 2 Ваш запрос очень большой и количество параметров в нем большое. Как организовать все так, чтобы было удобно работать. 24 Power Query. Добавить столбец в каждую таблицу табличного столбца В этом уроке вы узнаете как трансформировать табличный столбец, например, вы сможете добавить столбец индекса внутрь каждой таблицы табличного столбца. 25 Power Query. Интервальный просмотр 1 (ВПР 1) Объединить 2 таблицы с интервальным просмотром = 1. 26 Power Query. Относительный путь к файлу и папке Если ваш источник находится в той же папке, что и отчет, то вы можете указать относительный путь. В таком случае подключение не будет ломаться, если вы запустите файл на другом компьютере. 27 Power Query. Нарастающий итог в каждой категории Применим функцию нарастающего итога не ко всей таблице, а к определенному окну. 28 Power Query. ВПР без Merge или Join Вам нужно подставить данные из столбца другой таблицы. Как это сделать без объединения таблиц.

This post is old enough that this answer will probably be little use to the OP, but I spent forever trying to answer this same question, so I thought I would update it with my findings.

This answer assumes that you already have a working SQL query in place in your Excel document. There are plenty of tutorials to show you how to accomplish this on the web, and plenty that explain how to add a parameterized query to one, except that none seem to work for an existing, OLE DB query.

So, if you, like me, got handed a legacy Excel document with a working query, but the user wants to be able to filter the results based on one of the database fields, and if you, like me, are neither an Excel nor a SQL guru, this might be able to help you out.

Most web responses to this question seem to say that you should add a “?” in your query to get Excel to prompt you for a custom parameter, or place the prompt or the cell reference in [brackets] where the parameter should be. This may work for an ODBC query, but it does not seem to work for an OLE DB, returning “No value given for one or more required parameters” in the former instance, and “Invalid column name ‘xxxx’” or “Unknown object ‘xxxx’” in the latter two. Similarly, using the mythical “Parameters…” or “Edit Query…” buttons is also not an option as they seem to be permanently greyed out in this instance. (For reference, I am using Excel 2010, but with an Excel 97-2003 Workbook (*.xls))

What we can do, however, is add a parameter cell and a button with a simple routine to programmatically update our query text.

First, add a row above your external data table (or wherever) where you can put a parameter prompt next to an empty cell and a button (Developer->Insert->Button (Form Control) – You may need to enable the Developer tab, but you can find out how to do that elsewhere), like so:

[Picture of a cell of prompt (label) text, an empty cell, then a button.]

Next, select a cell in the External Data (blue) area, then open Data->Refresh All (dropdown)->Connection Properties… to look at your query. The code in the next section assumes that you already have a parameter in your query (Connection Properties->Definition->Command Text) in the form “WHERE (DB_TABLE_NAME.Field_Name = ‘Default Query Parameter’)” (including the parentheses). Clearly “DB_TABLE_NAME.Field_Name” and “Default Query Parameter” will need to be different in your code, based on the database table name, database value field (column) name, and some default value to search for when the document is opened (if you have auto-refresh set). Make note of the “DB_TABLE_NAME.Field_Name” value as you will need it in the next section, along with the “Connection name” of your query, which can be found at the top of the dialog.

Close the Connection Properties, and hit Alt+F11 to open the VBA editor. If you are not on it already, right click on the name of the sheet containing your button in the “Project” window, and select “View Code”. Paste the following code into the code window (copying is recommended, as the single/double quotes are dicey and necessary).

Sub RefreshQuery()
 Dim queryPreText As String
 Dim queryPostText As String
 Dim valueToFilter As String
 Dim paramPosition As Integer
 valueToFilter = "DB_TABLE_NAME.Field_Name ="

 With ActiveWorkbook.Connections("Connection name").OLEDBConnection
     queryPreText = .CommandText
     paramPosition = InStr(queryPreText, valueToFilter) + Len(valueToFilter) - 1
     queryPreText = Left(queryPreText, paramPosition)
     queryPostText = .CommandText
     queryPostText = Right(queryPostText, Len(queryPostText) - paramPosition)
     queryPostText = Right(queryPostText, Len(queryPostText) - InStr(queryPostText, ")") + 1)
     .CommandText = queryPreText & " '" & Range("Cell reference").Value & "'" & queryPostText
 End With
 ActiveWorkbook.Connections("Connection name").Refresh
End Sub

Replace “DB_TABLE_NAME.Field_Name” and «Connection name» (in two locations) with your values (the double quotes and the space and equals sign need to be included).

Replace «Cell reference» with the cell where your parameter will go (the empty cell from the beginning) — mine was the second cell in the first row, so I put “B1” (again, the double quotes are necessary).

Save and close the VBA editor.

Enter your parameter in the appropriate cell.

Right click your button to assign the RefreshQuery sub as the macro, then click your button. The query should update and display the right data!

Notes:
Using the entire filter parameter name («DB_TABLE_NAME.Field_Name =») is only necessary if you have joins or other occurrences of equals signs in your query, otherwise just an equals sign would be sufficient, and the Len() calculation would be superfluous.
If your parameter is contained in a field that is also being used to join tables, you will need to change the «paramPosition = InStr(queryPreText, valueToFilter) + Len(valueToFilter) — 1» line in the code to «paramPosition = InStr(Right(.CommandText, Len(.CommandText) — InStrRev(.CommandText, «WHERE»)), valueToFilter) + Len(valueToFilter) — 1 + InStr(.CommandText, «WHERE»)» so that it only looks for the valueToFilter after the «WHERE».

This answer was created with the aid of datapig’s “BaconBits” where I found the base code for the query update.

 

Доброе утро всем!
Подскажите пожалуйста, можно ли получить данные из SQL по условию в ячейках Excel? Просто получать данные из SQL легко. Но мне хотелось бы дать возможность пользователю указать в ячейках Excel значения, которые потом будет использоваться в запросе в качестве условий отбора данных. Возможно ли это сделать без использования VBA?

 

JeyCi

Пользователь

Сообщений: 3357
Регистрация: 27.11.2013

#2

07.04.2015 09:55:54

можно
нужно знание языка запросов Transact-SQL
общий пример:

Код
SELECT [ALL или DISTINCT] <названия колонок или *> FROM <название таблицы>
  WHERE <условие> ORDER BY <названия колонок> [ASC или DESC]

частный пример:

Код
SELECT id, fio,  comment FROM test_table
      WHERE  summa > 1500

проводит отбор id, fio, comment столбцов из таблицы test_table
— отбирает лишь те строки, в которых в столбце summa — значение >1500
p.s. запрос делается на вкладке Данные-Подключения-Добавить
(нюансы подключения зависят от источника)

Изменено: JeyCi07.04.2015 20:42:39

чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах)

 

Андрей Панькин

Пользователь

Сообщений: 46
Регистрация: 01.01.1970

#3

07.04.2015 10:01:18

Запрос написать не проблема, проблема в том что в условие WHERE хотелось бы видеть ссылку на ячейку Excel. Что-то типа:

Код
SELECT id, fio,  comment
FROM test_table
WHERE  summa > A1
 

B.Key

Пользователь

Сообщений: 633
Регистрация: 26.02.2014

#4

07.04.2015 10:02:58

В принципе можно и без VBA  в 2003 это просто:

Скрытый текст

Изменено: B.Key09.04.2015 17:44:19

 

B.Key

Пользователь

Сообщений: 633
Регистрация: 26.02.2014

Да забыл добавить в более молодых версиях, либо запрос с параметром, который будете ручками вбивать, либо VBA

 

Vitallic

Пользователь

Сообщений: 239
Регистрация: 23.07.2013

#6

07.04.2015 10:14:06

Добрый день, я делаю так
где strCon строка подключения

Код
Dim s as string,strCon as string
s=[A1].value
strCon =  .....WHERE (KADRY.CEX='" & s & "').....
 

Андрей Панькин

Пользователь

Сообщений: 46
Регистрация: 01.01.1970

#7

07.04.2015 10:23:53

Цитата
B.Key написал: добавит

В 2013 версии не нашел такого(

 

TheBestOfTheBest

Пользователь

Сообщений: 2366
Регистрация: 03.04.2015

Excel 2010 +PLEX +SaveToDB +PowerQuery

Сие возможно только поправив в подключении строку с SQL кодом — ручками!! Оно Вам надо?

Есть еще возможность использовать отбор полученного результат по расширенному фильтру.

Изменено: TheBestOfTheBest07.04.2015 11:42:51
(добавлена строка)

Неизлечимых болезней нет, есть неизлечимые люди.

 

JeyCi

Пользователь

Сообщений: 3357
Регистрация: 27.11.2013

#9

07.04.2015 11:43:52

xl 2010 — делаю запрос макросом (пример т к отсутствует пример от ТС)
— подключение не удаляется и его далее можно обновлять вручную

Код
Public Sub CreateConnection()
 Dim sCon As String, sSQL As String
 Dim pTable As QueryTable, pSheet As Worksheet
 
sCon = IIf(Val(Application.Version) < 12, "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1';", _
   "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1';")

sSQL = "SELECT [exp],[strike],[type],[change],[settle],[volume],[openInterest],[oi new],[oi new chg]" _
        & " FROM [sttlLoad]" _
        & " WHERE abs([oi new chg])>1000"
        
 Set pSheet = ThisWorkbook.Worksheets(2)
 Set pTable = pSheet.QueryTables.Add(sCon, pSheet.Range("A1"), sSQL)
 pTable.Refresh BackgroundQuery = False
End Sub

на таблице — результате запроса

ПКМ — «Параметры»

— почему-то не подсвечена??

может, если запрос настроить вручную — то можно более тонкую настройку сделать? к сожалению не знаю, как вручную??…
если опишите КАК — заранее спасибо — можно будет подумать и дальше…  (чтобы условие WHERE задать в ячейке)
P.S. если по коду указывать переменную — см. пост#6

Изменено: JeyCi07.04.2015 12:11:25

чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах)

 

JeyCi

Пользователь

Сообщений: 3357
Регистрация: 27.11.2013

#10

07.04.2015 18:20:41

запрос через ODBC, сделанный макросом — тоже не даёт залезть в ПКМ-Параметры… (не подсвечен, как на скрине поста предыдущего)

Скрытый текст

возможно какой-то способ есть для xl2010?
возможно и для 2013 он подойдёт…

Изменено: JeyCi07.04.2015 19:30:09

чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах)

 

JeyCi

Пользователь

Сообщений: 3357
Регистрация: 27.11.2013

#11

07.04.2015 19:22:05

Цитата
B.Key написал: Выделите ячейку диапазона внешних данных, полученного при помощи запроса с параметрами.

вот, кстати, наверно, и ответ на вопрос… в самом запросе должны быть (изначально) указаны Параметры… тогда похоже и будет доступ к ним через ПКМ… если не ошибаюсь… ЧТО xl понимает как Параметры запроса?? и как прописать? —

Xapa6apga

приводил примеры в ветках:

CreateParameter Null

 — 14 Фев 2015 17:58:45

Экспорт из Excel в SQL Server

— 3 Апр 2015 15:15:03
а дальше, полагаю, по вкусу… — надо ли
p.s.

Формирование параметрических запросов

P.P.S здесь почти кратко от Jom (30 Июл 2010 08:40:37  

SQL запрос из Excel VBA

)

Изменено: JeyCi07.04.2015 20:20:53

чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах)

 

TheBestOfTheBest

Пользователь

Сообщений: 2366
Регистрация: 03.04.2015

Excel 2010 +PLEX +SaveToDB +PowerQuery

MS QUERY, на базе которого осуществляется подключения, такое не допускает. Используйте Дополнительный/Расширенный фильтр.

Неизлечимых болезней нет, есть неизлечимые люди.

 

JeyCi

Пользователь

Сообщений: 3357
Регистрация: 27.11.2013

как вариант

http://www.excelworld.ru/forum/2-12367-1

(пример от Gustav  13.08.2014, 12:16 )
— сам запрос прописать в ячейках, но макрос обновления параметров запроса тоже понадобится (он коротенький — там же по линку)

чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах)

 

TheBestOfTheBest

Пользователь

Сообщений: 2366
Регистрация: 03.04.2015

Excel 2010 +PLEX +SaveToDB +PowerQuery

Макросом можно слепить любую SQL команду, но изначально «Возможно ли это сделать без использования VBA?»

Неизлечимых болезней нет, есть неизлечимые люди.

 

B.Key

Пользователь

Сообщений: 633
Регистрация: 26.02.2014

#15

08.04.2015 23:38:10

Цитата
TheBestOfTheBest но изначально «Возможно ли это сделать без использования VBA?»

———-
Можно все же сделать и в 2007 и в 2010 и наверное 2013(не проверял)
Принцип тот же, что и описывал для 2003.
1. Создаем подключение через ms query (важно !!!)
2. Выбираем нужную таблицу, отбираем необходимые поля.
3. Доходим до условий отбора данных, выбираем нужное поле и значение параметра вводим «?»
4. жмем далее, где запросит вводим значение параметра.
5. Когда данные получены заходим в подключения, выбираем нужное, далее свойства, вкладка «определение»
6. Наблюдаем строку подключения и текст запроса (в условии where видим ?) значит все идет гладко :)
7. В низу три кнопки , жмем среднюю «Параметры…»
8. Вуаля :) наблюдаем заветное меню описанное мною в прошлом посте №4
9. Выбираем нужную нам ячейку, ставим если надо галку автоматического обновления
10. Жмем «ОК» и наслаждаемся результатом.

———
Если надо то завтра скринами подкреплю.

ps…. кол-во параметров можно изменять, добавляя их ms query и делать ссылки на добавленные параметры как описано выше

Изменено: B.Key08.04.2015 23:53:04
(добавка)

 

Андрей Панькин

Пользователь

Сообщений: 46
Регистрация: 01.01.1970

#16

09.04.2015 09:23:58

Цитата
3. Доходим до условий отбора данных, выбираем нужное поле и значение параметра вводим «?»

Запнулся на шаге 3. Где это?

Изменено: Андрей Панькин09.04.2015 09:24:45

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

Доброе время суток
У меня в Microsoft Query ? не прошёл, но получилось так

Но если Connection было получено другим путём (не через Microsoft Query), то да обычное замещение значений полей фильтра на ?

Увы, не работает:cry:

Прикрепленные файлы

  • msquery.png (15.31 КБ)

Изменено: Андрей VG09.04.2015 09:56:49

 

B.Key

Пользователь

Сообщений: 633
Регистрация: 26.02.2014

#18

09.04.2015 10:00:57

Андрей VG,  

Цитата
B.Key написал: 1. Создаем подключение через ms query (важно !!!)

:) поэтому и написал.

 

Все разобрался, все работает как задумано. Класс! Спасибо огромное всем. Теперь будет юзерам счастье:D

 

B.Key

Пользователь

Сообщений: 633
Регистрация: 26.02.2014

Эту тему можно и в копилку добавить, так на самом деле информации в сети нет.

 

Андрей

Пользователь

Сообщений: 46
Регистрация: 01.01.1970

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#22

09.04.2015 13:32:41

Можно  и программно, только непонятно, почему с ODBC работает, а OLEDB не хочет. В инете ответа не нашёл. Пример для файла Excel

Код
Public Sub test()
    Const sODBC = "ODBC;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=$1;"
    Dim pSheet As Worksheet, pLO As ListObject
    Dim pQTable As QueryTable
    Set pSheet = ThisWorkbook.Worksheets.Add
    Set pLO = pSheet.ListObjects.Add(xlSrcExternal, sODBC, True, xlYes, pSheet.Range("A1"))
    Set pQTable = pLO.QueryTable
    With pQTable.Parameters
        .Add "Имя", XlParameterDataType.xlParamTypeVarChar
        .Item(1).SetParam xlRange, pSheet.Range("E1")
        .Item(1).RefreshOnChange = True
        .Add "Стоимость", XlParameterDataType.xlParamTypeDouble
        .Item(2).SetParam xlRange, pSheet.Range("F1")
        .Item(2).RefreshOnChange = True
    End With
    With pQTable.WorkbookConnection.ODBCConnection
        .CommandType = xlCmdSql
        .Connection = Replace$(sODBC, "$1", "c:Projectsdb.xlsx")
        .CommandText = Array("Select * From [Лист1$]", " Where ([Лист1$].name=?) And ([Лист1$].cost>?)")
        .BackgroundQuery = True
        .EnableRefresh = True
    End With
    pQTable.Refresh
End Sub

Можно потом сохранить в файл подключения и править «ручками» по мере необходимости.

 

JeyCi

Пользователь

Сообщений: 3357
Регистрация: 27.11.2013

#23

09.04.2015 13:59:26

Цитата
Если надо то … скринами подкреплю.

как-то так

Скрытый текст

Изменено: JeyCi09.04.2015 17:31:57

чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах)

 

JeyCi

Пользователь

Сообщений: 3357
Регистрация: 27.11.2013

#24

09.04.2015 17:29:04

Цитата
Андрей VG написал: только непонятно, почему с ODBC работает, а OLEDB не хочет. В инете ответа не нашёл.

можно лишь предполагать: (на основе моего 1-го скрина из #23, в котором видно [по тексту 8)], что через OLEDB можно только подключиться, а через ODBC- можно настроить запрос с помощью MS Query, который сделан для работы через ODBC)… Вобщем, думаю MS в xl2010 просто о бОльшем ещё не подумали — только о возможности «(через ODBC) иметь прямую связь с источником данных, и подключение хранить в кэше»… возможно, в xl2013 они как-нибудь и шагнули вперёд… лишь версия (в смысле гипотеза)

за макрос спасибо! — я вчера тоже думала об этой строке (не смогла найти правильную интерпретацию)… :) значит интуиция не подвела — через .CommandText можно задать, как угодно… жаль, что через OLE DB не срабатывает

Код
.CommandText = Array("Select * From [Лист1$]", " Where ([Лист1$].name=?) And ([Лист1$].cost>?)")

Изменено: JeyCi09.04.2015 17:48:36

чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах)

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

JeyCi, спойлер не кусается.

 

JeyCi

Пользователь

Сообщений: 3357
Регистрация: 27.11.2013

у меня вот только один вопрос остался — может быть, кто-нибудь подскажет?
в самом окне MS Query (ещё на этапе импорта БД) — скрин на примере импорта из базы Access —

можно ли в этом окне найти

Конструктор запросов

(как в Access)??

(помимо простого select*from where  <условие> )… что-нибудь посерьёзнее (union, join)??..
нашла лишь то, что на скрине…….

p.s.

vikttur

не успела подумать.. (спасибо за исправление)

Изменено: JeyCi09.04.2015 17:50:46

чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах)

 

B.Key

Пользователь

Сообщений: 633
Регистрация: 26.02.2014

В конструкторе нет, а в запросе, где нашли пожалуйста

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

JeyCi, «не первый день замужем»!
Не в первый раз вклиниваетесь в чужую тему и задаете вопросы НЕ ПО ТЕМЕ!
Кому взбредет в голову искать ответы о конструкторе запросов в теме «Получение данных из SQL»?
Обучение — отлично, но не создавайте бардака.

 

JeyCi

Пользователь

Сообщений: 3357
Регистрация: 27.11.2013

#29

09.04.2015 18:24:33

Цитата
vikttur написал: Не в первый раз вклиниваетесь в чужую тему и задаете вопросы НЕ ПО ТЕМЕ!

когда знаете, что в Конструкторе xl — нет никаких возможностей — то легко заявить, что вопрос не по теме… а не зная, как он выглядит (этот конструктор), — нет оснований верить (в своё незнание), что ссылку на ячейку в нём не указать… если есть возможность, тему раскрыть полно согласно заявленному оглавлению — зачем плодить другие, в которых от перестановки мест слагаемых сумма не меняется… если считаете мои посты НЕ ПО ТЕМЕ — будьте добры удалите всё!..

чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах)

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#30

09.04.2015 18:28:23

Не нервничайте. Как можно, пользуясь ПОИСКОМ, определить, что в этой теме есть ответ на «можно ли в этом окне найти Конструктор запросов»?
Ведь просим делить вопросы по темам не для того, чтобы тем было больше.

Dunno why MS has made this so complicated, You will have to use Microsoft Query.

Click on Data -> From External Sources -> From Microsoft Query. CHoose Data source comes up. Select SQL Server, enter the Auth details, and select the table

enter image description here

Click on Next, don’t select any filtering criteria, choose sort by criteria, click on next.
Now, click on View/Edit in MS Query instead of selecting Return to Excel

enter image description here

Click on Finish. Now in MS Query, Click on Criteria -> Add Criteria, choose the operator and let the value be []

enter image description here

Click on File -> return data to Excel. Now Excel should prompt you for the parameter, select the relevant cell

enter image description here

To edit the parameters, click on Data -> Properties -> Finger icon -> Definition -> parameters

enter image description here


You can also use the SQL query editor and type in the query with the joins and put a ? against the field where the parameter has to be fetched.

enter image description here

Понравилась статья? Поделить с друзьями:
  • Параметры microsoft word 2010
  • Параметры execute 1с word
  • Параметры excel сочетание клавиш
  • Параметры excel на макбуке
  • Параметры excel на mac