Поиск:

Ответ в темуСоздание новой темы Создание опроса
> QuantumGrid фильтрация/сортировка и большая таблиц 
:(
    Опции темы
Vova_ukr_lg
Дата 22.9.2007, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 15.2.2007

Репутация: нет
Всего: нет



в данном гриде есть возможность сортирвки и фильтрации, но на выборке ~100 - 130 тыс записей фильтрация сильно тормозит, сортировка тоже с тормозами, правде чуть меньшими.
Для доступа к серверу (Oracle) используется ODAC. При этом результат запроса помещается в VirtualTable (ODAC), из которой данные и выводятся в грид. 
Может можно отключить какие то свойства в гриде, что б он работал быстрее, но стались сортировка и фильтрация?

есть приложение на VisualFoxPro которое с подобным алгоритмом (выбрать много записей и обрабатывать на клиенте проверялось  при ~130 тыс записей на клиенте, на сервере >1.5 млн) сортировка и фильтрация работает очень быстро, но как я не представляю.
а надо такой результат получить на Delphi 
PM MAIL   Вверх
Mikh@il
Дата 23.9.2007, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



Код выкладывай свой, тогда будем разбираться
PM MAIL   Вверх
Vova_ukr_lg
Дата 23.9.2007, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 15.2.2007

Репутация: нет
Всего: нет



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

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
  cxEdit, DB, cxDBData, MemDS, VirtualTable, DBAccess, OdacVcl, Ora,
  cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView,
  cxGridTableView, cxGridDBTableView, cxGrid, StdCtrls, ExtCtrls, DASQLMonitor,
  OraSQLMonitor, Grids, DBGrids, GridsEh, DBGridEh, MemTableDataEh,
  DataDriverEh, MemTableEh, cxGridCustomPopupMenu, cxGridPopupMenu, Gauges;

type
  TForm1 = class(TForm)
    bnConnect_Load: TButton;
    OraSession1: TOraSession;
    ConnectDialog1: TConnectDialog;
    VirtualTable1: TVirtualTable;
    dsVT: TOraDataSource; //datasource virtualtable
    dsQuery: TOraDataSource;  //datasource OraQuery
    OraQuery1: TOraQuery;
    cxGrid1DBTableView1: TcxGridDBTableView;
    cxGrid1Level1: TcxGridLevel;
    cxGrid1: TcxGrid;
    cxGridPopupMenu1: TcxGridPopupMenu;
    procedure bnConnect_LoadClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.bnConnect_LoadClick(Sender: TObject);
var i:integer;

begin
  OraSession1.Connect;
    cxGrid1.Visible:=false;
  if  OraSession1.Connected then
    begin
    //формируем запрос
      OraQuery1.Active:=false;
      OraQuery1.SQL.Clear;
      OraQuery1.SQL.Add('select * from w_table3'); //что б не тянуть всю табличу, добавяться ограничения Where
      OraQuery1.Active:=true;

      //создаем поля виртуальной таблицы
      for i:=0 to dsQuery.DataSet.FieldCount-1 do
        VirtualTable1.AddField(dsQuery.DataSet.Fields[i].FieldName,
                                dsQuery.DataSet.Fields[i].DataType,
                                dsQuery.DataSet.Fields[i].size);

        VirtualTable1.Active:=true;

        //заполняем виртуальную таблицу
        dsQuery.DataSet.First;
        while not dsQuery.DataSet.eof do
          begin
              VirtualTable1.Append;

              for i:=0 to dsQuery.DataSet.FieldCount-1 do
                VirtualTable1.Fields[i]:= dsQuery.DataSet.Fields[i];

              VirtualTable1.Post;

              dsQuery.DataSet.Next;

          end;
        dsVT.DataSet.First;

        //назначаем гриду DataSourse
        cxGrid1DBTableView1.DataController.DataSource:=dsVT;
        //создаем колонки грида
        cxGrid1DBTableView1.DataController.CreateAllItems(true);
        cxGrid1.Visible:=true;

    end;

end;

end.




PM MAIL   Вверх
Akella
Дата 24.9.2007, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



может у тебя нет нужных индексов?
PM MAIL   Вверх
Vova_ukr_lg
Дата 24.9.2007, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 15.2.2007

Репутация: нет
Всего: нет



Цитата(Akella @ 24.9.2007,  11:29)
может у тебя нет нужных индексов?

Оказалось что данный QuantumGrid не рекомендуется для больших таблиц >15000 записей. Хотя на выборке около 60 тыс достаточно сносно работает. а индексы для виртуальной таблицы я думаю исползовать для сортировки при связке с обычыным DBGrid. Только как то надо будет рисовать стрелки-указатели направления сортировки при щелчке на заголовке.
PM MAIL   Вверх
Akella
Дата 25.9.2007, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(Vova_ukr_lg @  24.9.2007,  19:39 Найти цитируемый пост)
для сортировки при связке с обычыным DBGrid.

тогда DBGridEh тебе в помощь
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0476 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.