Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Обратиться к базе из Экселя с большим запросом / 6 сообщений из 6, страница 1 из 1
15.03.2006, 18:21:15
    #33603375
uu_vano
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обратиться к базе из Экселя с большим запросом
Делаю к базе из Экселя запросы через ODBC. Проблем нет, когда текст запроса < (приблизительно) 3000 знаков. А если больше - не работает. Может, кому-то удалось решить проблему ?
...
Рейтинг: 0 / 0
15.03.2006, 18:31:30
    #33603406
5631
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обратиться к базе из Экселя с большим запросом
К какой базе ?
...
Рейтинг: 0 / 0
15.03.2006, 18:46:47
    #33603442
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обратиться к базе из Экселя с большим запросом
uu_vanoДелаю к базе из Экселя запросы через ODBC. Проблем нет, когда текст запроса < (приблизительно) 3000 знаков. А если больше - не работает. Может, кому-то удалось решить проблему ?
Делаешь в базе хранимую процедуру и обращаешься из Экселя к ней.
...
Рейтинг: 0 / 0
16.03.2006, 11:46:12
    #33604675
uu_vano
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обратиться к базе из Экселя с большим запросом
База - MS SQL 2000
Идея с хранимой процедурой хороша, но сделать в базе процедуру не могу - не те права доступа :-(
Ещё идеи ?
...
Рейтинг: 0 / 0
16.03.2006, 12:10:07
    #33604801
5631
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обратиться к базе из Экселя с большим запросом
Используй MS Access.
...
Рейтинг: 0 / 0
16.03.2006, 18:20:39
    #33606347
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обратиться к базе из Экселя с большим запросом
uu_vanoБаза - MS SQL 2000
Идея с хранимой процедурой хороша, но сделать в базе процедуру не могу - не те права доступа :-(
Ещё идеи ?Ящик пива админу базы? :)

Тогда прийдется в макросе заводить ADO. Создаешь коннект к базе. Режешь свой запрос на несколько более коротких (видимо со временными таблицами) и кидаешь его в базу по частям. Полученый в итоге резалт-сет уже копируешь на лист экселя. Потом commit/rollback и рвешь коннект. Получится медленнее чем родной QueryTable, но будет работать.

Другой вариант: делаешь десяток QueryTables на разных листах, вытягиваешь в них данные подзапросов а итоговый резалтсет собираешь уже вручную через циклы на VBA.

Третий вариант: пишешь на чем-нибудь низком (типа С) специальную программку, передаешь ей в командной строке параметры, она делает всю необходимую работу через ODBC, и возвращает результат в виде csv файла. Из VBA будешь звать эту программку, дожидаться ее завершения и импортировать к себе итоговый csv.

И наконец вариант с которого надо начать: усиленно подумать и сократить этот гигантский запрос до чего-нибудь более удобоваримого. После чего поставить пиво админу :)


Вообще-то странное ограничение в три тысячи знаков. ODBC не имеет ограничения на длину запроса. Во всяком случае, я сам кидал в базу скрипты более ста килобайт размером за один SQLExecDirect(). Никаких проблем не испытывал. Это либо MSQuery либо сам Excel хулиганит.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Обратиться к базе из Экселя с большим запросом / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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