Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > DBAdvGrid + SimpleDataSet сортировка


Автор: php5 8.2.2010, 18:20

Через  SimpleDataSet подгружаю данные в  DBAdvGrid  нужно  теперь сделать возможность  локально  сортировки при клике по шапки  столбца .  Побывал  установить  свойство  DBAdvGrid1->SortSettings->Show = true  но это не помогло , хотя если  его установить в  true  для AdvStringGrid то  сортировка  работает нормально. 

Автор: vikaz 8.2.2010, 21:43
Привет, камрад! А если попробовать это реализовать программно? Я такой цепочкой не пользовался (DBAdvGrid + SimpleDataSet), сам пользуюсь EhLib + UniDAC. Так вот, у компоненты EhLib, есть  свойство OnTitleClick. Функция имеет сл. параметры: TColumnEh *Column.
я у себя написал сл. код:
Код

void __fastcall TMain_Form::DBGridEh1TitleClick(TColumnEh *Column)
{
 UniQuery->SQL->Text = "select * from employee where EmployeeGroup=" + IntToStr (Active_Tab) + " order by " + Column->DisplayName;
 UniQuery->Open();
}
//---------------------------------------------------------------------------

Таким образом сортировка происходит по той колонке, по которой щелкнули ЛКМ. smile

Автор: php5 8.2.2010, 23:00
Ну в принципе я такое тоже могу замутить , но ведь в таком случаи  нужно  заново делать  запрос к БД, а хотелось бы делать локально сортировку 

Автор: vikaz 9.2.2010, 06:03
В большинстве своем случаем при работе с БД, компоненты добавляют к запросу order by, самостоятельно! Имхо тоже самое.

Автор: mrbrooks 9.2.2010, 08:40
Цитата(vikaz @  9.2.2010,  06:03 Найти цитируемый пост)
В большинстве своем случаем при работе с БД, компоненты добавляют к запросу order by, самостоятельно! 

Фиг его знает камрад. Работа может вестись и с кешем.
php5, вообще если нет вложенного функционала у контрола - тогда только так, как советует vikaz. В противном случае надо юзать сторонние компоненты (вполне вероятно - платные) такие как DevExpress. Там, если не ошибаюсь, есть все - о чем можно только мечтать в быдлогуе.

Автор: vikaz 9.2.2010, 13:02
Цитата(mrbrooks @  9.2.2010,  10:40 Найти цитируемый пост)
Фиг его знает камрад. Работа может вестись и с кешем.

smile  Согласен! smile

Автор: Лена 9.2.2010, 14:20
На сайте производителя, выложен пример Sorting a DB grid by clicking a column header
http://www.tmssoftware.com/site/dbadvgrd.asp?s=faq
может поможет.

Автор: php5 11.2.2010, 11:34
Цитата(Лена @ 9.2.2010,  14:20)
На сайте производителя, выложен пример Sorting a DB grid by clicking a column header
http://www.tmssoftware.com/site/dbadvgrd.asp?s=faq
может поможет.

пример для  ADOSort почему-то не работает, а  BDESort реализован по принципу которой  предложил  vikaz. Скачал  компонент DevExpress v48  для  RAD Studio 2010  в Delphi проект с  компонентом компилируется,  а   builder –е  при компиляции получаю ошибки :
Код


[BCC32 Error] Dxuxtheme.hpp(114): E2238 Multiple declaration for 'BPBF_TOPDOWNDIB'
[BCC32 Error] Dxuxtheme.hpp(112): E2344 Earlier declaration of 'BPBF_TOPDOWNDIB'
[BCC32 Error] Dxuxtheme.hpp(114): E2444 Member 'BPBF_TOPDOWNDIB' is initialized more than once
Код

После того как я закомментировал в  Dxuxtheme.hpp  строку  static const ShortInt BPBF_COMPOSITED = 0x2;  то получаю ошибку   

access violation at address 00378FB7 in module 'dxGDIPlusD14bpl' Read of address 00000010

Пытался установить  компонент чисто из  builder –а, но  при попытки открыть  файл 
*С14.bpk появляется ошибка "Access violation at address 207FD68F in module 'coreide140.bpl'. Read of address 00000000."   Как этот компанет установить в Builder ?

Автор: deltas 30.3.2010, 22:54
Привет! Тоже пользуюсь DBAdvGrid, хоть и глючная но красивая штука smile

Чтоб работал Sort  установить  PageMode:=false

Автор: deltas 31.3.2010, 01:06
Хотя с PageMode:=false появляются другие проблеммы... smile 
Параметр отвечает за связь с DataSource.

Решил другим путем, сортирую саму таблицу - 
Код


procedure TForm1.DBAdvGrid1ClickSort(Sender: TObject; ACol: Integer);
begin
 ADOTable1.Sort:=ADOTable1.Fields[Acol].FieldName +' ASC';
end;



Вместо ' ASC' можно ' DESC' (наоборот)...

Только если в ячейках есть пробелы вылетает ошибка... кто подскажет как исправить?

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