Существует ли компонент DBGrid, который может быстро обрабатывать большие наборы данных?

Большие наборы данных, миллионы записей нуждаются в специальном программировании для поддержания скорости в DBGrids.

Я хочу знать, есть ли готовые компоненты для Delphi (DBGrids), которые делают это автоматически?

РЕДАКТИРОВАТЬ Например: некоторые базы данных имеют такие функции, как выборка 1-й X записей (например, 100 записей). Когда я достигаю дна с помощью прокрутки, я хочу автоматически получить следующие 100. И наоборот, когда я достигаю начала, я хочу получить предыдущие 100. Я знаю, что могу запрограммировать это, но, несомненно, можно распространить эту функцию на DBGrid контролирует, где DBGrid выполняет буферизацию. Это сэкономит немало времени на программирование - вам просто нужно установить, так сказать, "размер буфера".

5 ответов

Решение

Я хотел бы взглянуть на Developer Express QuantumGrid Suite. (@birger: ты просто был на галочку быстрее;-)) Так что я не просто повторяю ответ, некоторые уточнения:

DevExpress Grid использует контроллер данных, который имеет несколько режимов для управления данными, привязанными к сетке. Одним из них является именно то, что вы ищете:

Режим сетки

При использовании Grid Mode в память загружается только фиксированное количество записей набора данных. Поскольку из набора данных извлекается только ограниченный набор записей, автоматическая сортировка, фильтрация и сводные вычисления отключены в сеточном режиме (вместо этого необходимо управлять вручную). По умолчанию этот режим отключен, и ExpressDataController загружает все записи в наборе данных.

У него есть некоторые недостатки, которые кажутся довольно очевидными: вы не можете делать сводку, сортировать или фильтровать, если у вас нет всех записей под рукой.

Возможно, вы захотите взглянуть на замечательный (бесплатный, с открытым исходным кодом, с двойной лицензией MPL 1.1 и GPL, который можно использовать в приложениях с закрытым исходным кодом) Virtual TreeView и его предоставленные пользователем потомки (прокрутите страницу вниз, чтобы найти их).

Изменить, чтобы отредактировать вопрос: Virtual TreeView не только позволяет обрабатывать миллионы узлов, не сохраняя их в памяти, но на самом деле это предпочтительный способ его использования. Вы предоставляете данные через обратные вызовы событий, когда это необходимо, и можете указать дереву кэшировать эти данные (или нет).

Да, и, конечно, он также имеет режим сетки / отчета, в котором он может функционировать как таблица (просто установите для свойства GridExtensions значение True.)

NextGrid - это легкая, быстрая и красивая сетка для Delphi.

http://www.bergsoft.net/component/next-grid/features.htm

ОБРАБОТКА БОЛЬШОЙ КОЛИЧЕСТВА КЛЕТОК БЕЗ ПОТЕРЯ СКОРОСТИ

NextGrid может обрабатывать очень большое количество ячеек без потери скорости. Скорость добавления, изменения и удаления данных не зависит от количества ячеек. В демонстрации NextGrid вы можете увидеть, как быстро NextGrid работает с 100 000 строк и 10 столбцов = 1 000 000 ячеек.

Я думаю, что DevExpress Quantumgrid поддерживает это очень хорошо.

Извини, я только что увидела твой комментарий к Нефтали

если вы хотите принести 100 записей за раз, а затем получить следующие 100, эта работа связана с компонентами доступа к базе данных, посмотрите на компоненты devart, они предлагают компоненты прямого доступа к наиболее используемой базе данных, и у них есть функция, о которой вы спрашиваете и больше:

http://www.devart.com/products-vcl.html

Другие вопросы по тегам