** Roman |
Отправлено: 01.02.2005, 20:17 |
|
Не зарегистрирован
|
Есть у меня Table + DataSource + TRxGrid
и вот надо все, что отображает Grid закинуть в
Excel для вытаскивания данных из DataSource->DataSet
использую Fist() далее Next()
Но это получается очень медленно и ктому же есть
неприятность в виде: когда курсор стоит в Grid на
определенной позиции при использовании Fist() и Next()
он теряется.
Подскажите плз. есть ли другой способ быстро доставать данные
без использования Fist() и Next(). |
|
AVC |
Отправлено: 02.02.2005, 09:08 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Нет, или почти нет. Для "или" можно "закачать" выборку в память (скорее всего она уже и так там — будет двойной расход памяти) и работать как с массивом.
Честно говоря ни когда не замечал тормозов при проходе через Next. Тормоз, как правило, при передаче в Excel но здесь есть варианты решения.
Альтернатива — заставить Excel самого сделать эту выборку. На этом пути так много "головной" боли, что, лично я ни когда его не автоматизировал.
PS.
Под рукой было приложение — проделал Grid в Excel
Фаза выполнения запроса (результат — 43 410 записей)
получение первой строки — 9 сек
получение всех строк — 45 сек
Фаза экспорта
формирование файла для Excel — 15 сек
открытие Excel (первое) — 2 сек
Я бы не стал называть это тормозами. |
|
olegenty |
Отправлено: 02.02.2005, 10:06 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Afalina Soft XLReport 4 — рулез. скачай с soft.0zones.com. экспортирует посредством
1. DDE
2. OLE
3. TLB
при DDE — летает. только строки длиннее 255 символов режет
при OLE/TLB — чуть медленнее, но экспортирует всё.
как я понял из описалова — формирует массив в памяти, потом весь его отдаёт Excel, за счёт чего и получается ускорение.
|
|
** Roman |
Отправлено: 02.02.2005, 11:44 |
|
Не зарегистрирован
|
Спасибо буду экспериментировать. |
|