Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > cxGrid, фильтрация и выгрузка


Автор: Агрох 28.1.2014, 13:38
В cxGrid из базы загружаю данные. Позже эти данные надо отфильтровать по полю с датой и выгрузить в excel.
Столкнулся с двумя проблемами:

1) Когда первый раз запускаешь фильтрацию то она делается очень долго. Все последующие фильтрации, в том числе показать всё и фильтрация по тому же значению что и в первый раз, работают нормально. Из за чего такое может быть и как лечится?

2)Выгрузить данные из таблицы - не проблема, в excel темболее. Но надо выгрузить именно отфильтрованные в cxGrid.

На официальном сайте нашёл такой пример:
Код

CXCDF := cxGrid1DBTableView1.DataController.Fields[0];
  for i1 := 0 to cxGrid1DBTableView1.DataController.FilteredRecordCount - 1 do
  begin
    ARowIndex := cxGrid1DBTableView1.DataController.FilteredRecordIndex[i1];
    Ap.Cells[i1, 1] := VarToStr(cxGrid1DBTableView1.DataController.GetFilterDataValue(ARowIndex, CXCDF));
  end;

Но проблема в том, что в cxGrid1DBTableView1.DataController нет свойства Fields. Видимо что то изменили. Тема на сайте 8-ми летней давности. Других на ту же тему пока не нашёл.

Как перебрать список отсортированных полей?

Автор: Агрох 28.1.2014, 14:58
Вторую задачу решил сам. Если кому надо, вот пример:
Код

  for i1 := 0 to cxGrid1DBTableView1.DataController.FilteredRecordCount - 1 do
  begin
    ARowIndex := cxGrid1DBTableView1.DataController.FilteredRecordIndex[i1];
    Ap.Cells[i1 + 1, 1] := cxGrid1DBTableView1.DataController.GetDisplayText(ARowIndex, 0);
  end;


Первая проблема ещё актуальна.

Автор: Агрох 3.2.2014, 16:50
Похоже никто не работает с cxGrid. smile

Судя по тому, какие вопросы задают на оф сайте DevExpres и как на них отвечают, проблема в том, что cxGrid не предназначен для работы с большим количеством записей. Где то всплывала цифра в несколько десятков тысяч максимум, при которых скорость работы этого компонента остаётся нормальной.

Пришлось выходить из ситуации использованием фильтра на уровне ADOTable.

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