Модераторы: Akina
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Отчет из Access в Excel, CopyFromRecordset & объединен 
:(
    Опции темы
Spiage
Дата 21.2.2005, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 21.2.2005

Репутация: нет
Всего: нет



Привет мастерам!

Нужен совет:
Делаю формирование отчетов в Экселе, т.к. это требование заказчика
Хотел бы ускорить скорость
Но не могу использовать CopyFromRecordset, т.к. использую объединенные ячейки в шаблоне
Хитрый Эксель не хочет понимать, что мне не надо подряд во все ячейки данные включать, а только в первые ячейки объединения
Пока выкрутился заполнением по каждому столбцу отдельно

Может быть кто-нибудь посоветует какой-нибудь более эффективный способ?
Как вариант можно использовать запрос с пустыми строками в перемешку с данными, но это совсем не красиво...

Проблема эффективности стоит из-за того, что заказчик предпологает использовать старый парк машин в филиалах
PM MAIL   Вверх
Akina
Дата 21.2.2005, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Напрашивается предложение не использовать объединение ячеек... откуда такое параноидальное желание объединять?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Spiage
Дата 22.2.2005, 06:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 21.2.2005

Репутация: нет
Всего: нет



Я думал об этом, но причина в очень сложной форме бланков отчетности
И без уменьшения ширины столбцов и объединения не обойтись

Может быть существует другой, более быстрый способ передачи данных в Эксель?
PM MAIL   Вверх
Akina
Дата 22.2.2005, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Spiage @ 22.2.2005, 07:24)
без уменьшения ширины столбцов и объединения не обойтись

не верю.

Впрочем предлагаю такой способ:
1) Выливаем данные на неформатированную таблицу на листе. Это можно сделать быстро тем же CopyFromRecordset.
2) Бланк находится на другом листе, в нем в нужных ячейках - ссылки на тот лист куда мы бросим данные. Обновление происходит практически мгновенно.
3) Далее можно либо запустить макрос преобразования формул в значения на листе с бланком и потом прибить временный лист, либо оставить все как есть.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Spiage
Дата 22.2.2005, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 21.2.2005

Репутация: нет
Всего: нет



Выводится не простой отчет, а "хитрый":

Шапка
подотчет1 (со своим форматом ячеек)
подотчет2 (со своим форматом ячеек)
подотчет3, основной (со своим форматом ячеек)
подотчет4 (со своим форматом ячеек)
подотчет5 (со своим форматом ячеек)
подписи (со своим форматом ячеек)

Так что полностью без объединения и правда не олучается

Про преобразование формул:
Есть ли какой-то способ, кроме PasteSpecial Paste:=xlPasteValues для преобразования формулы в значение?

И большое спасибо за ответы, я сравню время и выложу более оптимальный вариант (формулы или CopyFromRecordSet по столбцам)
Уже могу сказать, что при формировании отчетов из Акцесса в Экселе быстрее всего получается так:
1. Создается шаблон отчета
2. В модуле листа отчета прописывается процедуры его формирования на основе передаваемого ADODB.Recordset
3. Заводятся 2 процедуры (для формирования отчета и для удаления листа шаблона)
4. Из Access вызываются только эти две процедуры (справнивал скорость, если из Access напрямую формировать - хуже примерно в 15-20 раз)
5. Для копирования быстрее всего срабатывает
ЛистШаблона.Range(<Именованые ячейки>).Copy Destination:=ЛистОтчета.Cells(строка, столбец)
6. В Access необходимо использовать перед выполнением наших процедур
oApp.Visible = False
oApp.UserControl = True
oApp.ScreenUpdating = False
и
oApp.ScreenUpdating = True
oApp.Visible = True
после
7. Для отключения вопроса об удалении листа шаблона использовать
до вызова второй процедуры
oApp.DisplayAlerts = False
после вызова второй процедуры
oApp.DisplayAlerts = True

Вроде все замечания, пишу на случай, чтобы кому-нибудь съэкономить время в поисках решения (мне бы пригодилось какое-то время назад такое описание smile )
PM MAIL   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0744 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.