![]() |
|
Модераторы: Akina |
![]()
|
|
| Vlad_Spb |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 9.6.2007 Репутация: нет Всего: нет |
Здравствуйте.
Есть запрос в MS Access, который работает через несколько других запросов с большими массивами данных через ODBC. Среднее время выполнения запроса составляет примерно 2-3 минуты. На основе этого запроса формируется отчёт, далее этот отчёт выгружается в EXCEL с помощью DoCmd.OutputTo. В коде сначала формирую и открываю отчёт, потом - выгружаю в EXCEL
Обратил внимание, что после формирования отчёта перед выгрузкой в EXCEL запрос запускается заново, т. е. 2-3 минуты превращаются в 4-6 минут, что не радует. А теперь вопрос: как избежать повторного запуска запроса? можно ли использовать для выгрузки в EXCEL данные запроса , использованные для формирования отчёта? Есть ли более грамотный способ, кроме сливания запроса в таблицу и последующей работой уже с таблицей, а не с запросом? Просмотрел темы за этот год - чёт не нашёл ничего похожего... Честно говоря, даже не знаю, по каким ключевым словам искать... Заранее благодарен. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
А зачем он сначала формируется? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| bopoha |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: 21 Всего: 21 |
Можно напрямую писать в Excel...
Выдержка из класса для работы с Excel: заголовок клсса
создание/уничтожение приложения Excel
открытие документа
запись/чтиение в/из ячейку(-и)
|
||||||||
|
|||||||||
| Vlad_Spb |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 9.6.2007 Репутация: нет Всего: нет |
Спасибо всем за отклики. Akina, я, наверное, не совсем правильно сформулировал. Под "формированием и открытием" я имел в виду только те действия, которые делает Access при выполнении
Если я правильно понимаю, в случае, когда отчёт использует запрос в качестве источника данных, то Docmd запускает этот запрос, формирует отчёт и открывает в режиме просмотра. В результате всей этой кухни пользователь хочет: 1) просмотреть и напечатать отчёт 2)выгружать запрос, который лежит в основе отчёта в п. 1), в EXCEL Тот код из двух строчек, который я привёл в своём первом посте, запускает запрос два раза (для отчёта и для выгрузки запроса в EXCEL), что занимает достаточно много времени. Есть ли способ заставить DoCmd.OutputTo не перезапускать запрос, который он выгружает? Bopoha, у меня проблема не с выгрузкой в EXCEL как таковой, DoCmd.OutputTo меня вполне устраивает, кроме того, что он запускает запрос. Твой способ работы с EXCEL поможет этого избежать? |
||||||
|
|||||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Конечно нет. Макрос (а вызывается на исполнение макрос) знать не знает что недавно запускался другой макрос, получивший нужные данные. Но вот если сделать на самом просматриваемом отчете кнопку выгрузки его в Эксель, и в модуле отчета написАть соотв. код - второго запроса не будет. Впрочем, и в этом случает надо использовать не DoCMD, а работать непосредственно с RowSource запроса. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]()
|
| Правила форума "MS Access" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS Access | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |