Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Отображение больших массивов из DBF в ListView


Автор: evk 9.2.2006, 10:25
Всем привет,
поделитесь плиз с начинающим.
Есть DBF с большим количеством записей (до 300 000). Надо отобразить напр. 25 000 из 300 000 с каким-то фильтром. Кроме того, при выводе необходимо
раскрашивать отдельные записи по заданному условию. Для выборки использовал ADO. Для отображения пытался использовать стандартный ListVew, т.е. открыл Recordset и пока не EOF добавляю Item и SubItem в ListView, причем если запись удовлетворяет заданному условию, то устанавливаю цветовые и фонтовые свойства Item и SubItem в нужное значение.
В принципе функционально ListView устраивает, но
тормоза жуткие., до 2000-3000 записей еще терпимо, а если больше - напрягает.
Какой лучше компонент использовать для такой задачи?
Не будет ли лучше создать свой ListVew, который будет разруливать заданное условие и устанавливать цвета и шрифты? Есть ли какой-то способ "массированной" вставки, так чтобы не было тормозов?
Заранее благодарен.

Автор: Naghual 9.2.2006, 11:42
В такой ситуации лучше всего заполнять ListView динамически а не полным рекордсетом.

Автор: Exception 9.2.2006, 11:54
Если такое необходимо, значит интерфейс плохо спроектирован. Я сомневаюсь, что юзеру нужны сразу 3000 записей.

Автор: Naghual 9.2.2006, 11:57
Exception Абсолютно согласен с замечанием.

evk Стоит подумать о фильтрах.

Автор: evk 9.2.2006, 13:09
Как на меня, то юзеру и 2 сотни записей сразу не нужны, но таковы реалии, традиции и т.д., а именно вывести сразу кучу строк и человек скроллингом по ним бегает,
выбирает и т.д. У кого то была такая задача? Я сам видел программы, где одновременно выводилось по 25000 записей из какого-то источника данных в элемент типа ListView
(по крайней мере очень похож) и они были все доступны: я сразу могу кнопкой Home перейти к первой записи, End - к последней. И отображение страшно живенькое - за 5-7 сек.
Naghual
Динамически - имеется в виду подгружать по мере надобности куски рекордсета? Что значит стоит подумать о фильтрах?

Автор: Naghual 9.2.2006, 15:59
Цитата
Динамически - имеется в виду подгружать по мере надобности куски рекордсета?

Да. Это я и имел в виду.

Цитата
Что значит стоит подумать о фильтрах?

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

Автор: evk 9.2.2006, 16:38
Данные отсортированы по дате+времени. Вряд ли этот фильтр поможет, если необходимо вывести строки за последнюю неделю.

Автор: Naghual 9.2.2006, 17:32
Цитата
Данные отсортированы по дате+времени. Вряд ли этот фильтр поможет, если необходимо вывести строки за последнюю неделю.

Тут уже попахивает аналитикой. Сухая статистика с таким количеством записей - нонсенс.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)