Здравствуйте, c.j.frost, Вы писали:
CJF>Как отсортировать TDBGrid по нужному столбцу
Для связки ADO + DBGridEh написал вот такую функцию (сортировка локальная)
void __fastcall TFormMain::DBGEPartySortMarkingChanged(TObject *Sender)
{
TDBGridEh *grid = dynamic_cast <TDBGridEh *>(Sender);
if(grid == NULL) return;
TCustomADODataSet *dataset = dynamic_cast <TCustomADODataSet *>(grid->DataSource->DataSet);
if(dataset == NULL) return;
if(grid->SortMarkedColumns->Count == 0)
{
dataset->Sort = "";
return;
}
WideString FieldName = grid->SortMarkedColumns->Items[0]->FieldName;
WideString Order;
if(grid->SortMarkedColumns->Items[0]->Title->SortMarker == smDownEh)
Order = " ASC";
else// smUpEh;
Order = " DESC";
dataset->Sort = FieldName + Order;
}
Как отсортировать TDBGrid по нужному столбцу
20.06.05 10:28: Перенесено модератором из 'Базы данных' — Merle
"c.j.frost" <42883@users.rsdn.ru> wrote in message
news:1229593@news.rsdn.ru...
> Как отсортировать TDBGrid по нужному столбцу
Сортировать надо не грид а датасет. Например обрабатывать клик по шапке столбца и сортировать датасет (в общем случае делать select * ... order by). ADO компоненты умеют сами сортировать...
Posted via RSDN NNTP Server 1.9
Здравствуйте, c.j.frost, Вы писали:
CJF>Как отсортировать TDBGrid по нужному столбцу
В Delphi\Builder.
Здравствуйте, c.j.frost, Вы писали:
CJF>Как отсортировать TDBGrid по нужному столбцу
Можно по индексу, если не использовать SQL. Создайте физические индексы для полей, по которым планируете сортировать или создавайте индексы динамически.
Если используете SQL, то используйте .... ORDER BY имя_поля.
Здравствуйте, Rius, Вы писали:
R>Здравствуйте, c.j.frost, Вы писали:
CJF>>Как отсортировать TDBGrid по нужному столбцу
R>Для связки ADO + DBGridEh написал вот такую функцию (сортировка локальная)
R>void __fastcall TFormMain::DBGEPartySortMarkingChanged(TObject *Sender)
R>{
R> TDBGridEh *grid = dynamic_cast <TDBGridEh *>(Sender);
R> if(grid == NULL) return;
R> TCustomADODataSet *dataset = dynamic_cast <TCustomADODataSet *>(grid->DataSource->DataSet);
R> if(dataset == NULL) return;
R> if(grid->SortMarkedColumns->Count == 0)
R> {
R> dataset->Sort = "";
R> return;
R> }
R> WideString FieldName = grid->SortMarkedColumns->Items[0]->FieldName;
R> WideString Order;
R> if(grid->SortMarkedColumns->Items[0]->Title->SortMarker == smDownEh)
R> Order = " ASC";
R> else// smUpEh;
R> Order = " DESC";
R> dataset->Sort = FieldName + Order;
R>}
А если подключить модуль
EhLibADO из папки
DataService компонентов Eh, то руками ничего делать не придется.
Удачи.

... << RSDN@Home 1.1.4 beta 7 rev. 463>> А в Winamp'e: И ничего не слышно...
Здравствуйте, Shtirliz, Вы писали:
S>А если подключить модуль EhLibADO из папки DataService компонентов Eh, то руками ничего делать не придется.
S>Удачи. 
Так как эта .. отказалась компилироваться, пришлось писать вручную

Не расскажите пошагово, как сие подключить?
Здравствуйте, Rius, Вы писали:
R>Здравствуйте, Shtirliz, Вы писали:
S>>А если подключить модуль EhLibADO из папки DataService компонентов Eh, то руками ничего делать не придется.
S>>Удачи.
R>Так как эта .. отказалась компилироваться, пришлось писать вручную
А что написало, когда отказывалось компилиться?
Мобыть ето проблемы Builder'а?
Ибо в Delphi нет проблем...
R>Не расскажите пошагово, как сие подключить?
Просто подключить модуль и все.
Он при загрузке регистрит классы для сортировки и фильтрации.
... << RSDN@Home 1.1.4 beta 7 rev. 463>> А в Winamp'e: И ничего не слышно...