powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Sql - запрос к Recordset
11 сообщений из 11, страница 1 из 1
Sql - запрос к Recordset
    #36626422
Flaer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, такая задача:
Есть открытый Recordset, который содержит выборку из базы данных SQL.
Задача - выполнить к рекордсету ещё серию запросов (циклическая обработка).
Это возможно?
Или может быть в Экселе можно создать виртуальную временную таблицу, к которой потом можно применять селекты?
...
Рейтинг: 0 / 0
Sql - запрос к Recordset
    #36626515
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flaer, может быть лучше в SQL-запросе использовать подзапросы (т.е. вложенные запросы), чтобы делать выборку данных за один "проход"?
Предпочтительно, конечно, организовать сложный запрос без подзапросов, если это возможно.
...
Рейтинг: 0 / 0
Sql - запрос к Recordset
    #36626533
Flaer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычно так и делаю, максимум нагрузки отдаю на SQL Server, но в данном случае если сделать цикл непосредственно к БД, но тогда у меня вырастает порядка 100 тыс дополнительных запросов к БД, чего сами понимаете делать не хочется.
...
Рейтинг: 0 / 0
Sql - запрос к Recordset
    #36626553
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда, наверное, - временная таблица на листе Excel. Только не виртуальная, а вполне реальная ))
И фильтр. Авто- или расширенный...
Можно, конечно, при желании, делать запросы к книге Excel и через подключение с помощью ADO.
...
Рейтинг: 0 / 0
Sql - запрос к Recordset
    #36626606
Flaer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не вариант-не хватит листа для всех срок (более 100 тыс), да и медленно это
...
Рейтинг: 0 / 0
Sql - запрос к Recordset
    #36626651
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрел про рекордсет: есть у него св-во Filter для извлечения поднабора записей.
Есть ещё методы Find (находит набор записей, соответствующих какому-то критерию) и
Seek (поиск записи с исп. индекса, но только на наборе клиентской стороны).
Всё это я использовать не пробовал, но, возможно, что-то из этого перечня Вам поможет ))
...
Рейтинг: 0 / 0
Sql - запрос к Recordset
    #36626843
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нарыл про синтаксис:

Код: plaintext
1.
2.
3.
4.
5.
'возможно использование операторов AND, OR, NOT
rs.Filter = "Pole1 = '" & подстрока & "' AND Pole2 = 'Москва'"
'(подстрока - переменная, содержащая часть строки)

'сброс фильтра
rs.Filter = "" '(или rs.Filter = adFilterNone)

Код: plaintext
rs.Find "Pole2 = 'Москва'" ' только один критерий поиска +  3  необязательных параметра
...
Рейтинг: 0 / 0
Sql - запрос к Recordset
    #36626864
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FlaerЭто не вариант-не хватит листа для всех срок (более 100 тыс), да и медленно это
Если можно дробить запросы на части, по кол-ву строк листа Excel, то это - всего 2 запроса в версии Excel младше 12-й,
а в 2007-м - строк хватит с лихвой без дробления.

Насчёт "медленно" не соглашусь: содержимое рекордсета копируется на лист оч. быстро
(диапазон.CopyFromRecordset rs); фильтры Excel работают также не медленно.
...
Рейтинг: 0 / 0
Sql - запрос к Recordset
    #36626874
Flaer,
Flaer...но тогда у меня вырастает порядка 100 тыс дополнительных запросов к БД...
Flaer...всех срок (более 100 тыс)...
рискуете состариться пока клиент будет 100к запрососв к набору записей из >100к строк отрабатывать
...
Рейтинг: 0 / 0
Sql - запрос к Recordset
    #36626879
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про оперативную память,

Дождёмся комментария автора. Пока сообщение о 100к запросов к БД воспринимаю как опечатку
...
Рейтинг: 0 / 0
Sql - запрос к Recordset
    #36629134
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlthЕсли можно дробить запросы на части, по кол-ву строк листа Excel, то это - всего 2 запроса в версии Excel младше 12-й,
а в 2007-м - строк хватит с лихвой без дробления.

Насчёт "медленно" не соглашусь: содержимое рекордсета копируется на лист оч. быстро
(диапазон.CopyFromRecordset rs); фильтры Excel работают также не медленно.Да и в память при желании загнать в виде массива тоже не такая уж проблема:

Код: plaintext
1.
2.
3.
Dim rs As ADODB.Recordset
Dim arrData As Variant
'...
arrData = rs.GetRows
или
Код: plaintext
1.
2.
3.
Dim rs As ADODB.Recordset
Dim arrData As Variant
'...
arrData = rs.GetRows(Fields:=Array( 0 ,  2 ,  4 ,  7 ))

А еще рекордсет можно легко загнать в сводную таблицу

Код: plaintext
1.
2.
3.
4.
5.
6.
Dim rs As ADODB.Recordset
Dim PC As PivotCache
Dim PT As PivotTable
'...
Set PC = ActiveWorkbook.PivotCaches.Add(SourceType:=xlExternal)
Set PC.Recordset = rs
Set PT = .PivotTables.Add(PivotCache:=PC, TableDestination:=.Range("A1"))

Вообще, топик-стартеру не мешало бы несколько приоткрыть завесу таинственности вокруг выссказывания "выполнить... серию запросов (циклическая обработка)" посредством конкретного примера запроса или даже фрагмента кода.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Sql - запрос к Recordset
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]