Существует ли компонент 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, они предлагают компоненты прямого доступа к наиболее используемой базе данных, и у них есть функция, о которой вы спрашиваете и больше: