C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Помогите с доступом к данным
** 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 сек

Я бы не стал называть это тормозами. smile.gif
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


Не зарегистрирован







Спасибо буду экспериментировать.

Вернуться в Работа с базами данных в C++Builder