Вниз
Скачать: CL | DM;

Сортировка в DBGrid   Найти похожие ветки 

 
Mery   (2007-09-18 08:23) [0]

Как вы решаете вопрос с сортировкой данных в dbgrid?
Подскажите, как по щелчку на заголовке столбца настроить сотрировку вверх-вниз? Если по запросу используя order by,то это требует переоткрытие данных.
И как задать программе по какому столбцу идёт сортировка, чтобы это было универсально для любого столбца?


 
r9000   (2007-09-18 08:51) [1]

На форме расположены TQuery, TDatasource и TDbGrid связанные вместе.

QuerySQL, это глобальная строка, которая содержит SQL-выражение.

begin
 QuerySQL := "SELECT * FROM Customer.DB";
 Query1.SQL.Add(QuerySQL);
 Query1.Open;
end;

В DBGrid в событии OnTitleClick, достаточно добавить ORDER-BY к sql-строке и обновить запрос.

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
 witzh Query1 do
 begin
   DisableControls;
   Close;
   SQL.Clear;
   SQL.Add(QuerySQL);
   SQL.Add("ORDER BY " + Column.FieldName);
   Open;
   // Восстанавливаем настройки заголовка, иначе всё станет синим
   DBGrid1.Columns.RestoreDefaults;
   Column.Title.Font.Color := clBlue;
   EnableControls;
 end;
end;


 
MsGuns ©   (2007-09-18 09:14) [2]

>r9000   (18.09.07 08:51) [1]
>QuerySQL, это глобальная строка, которая содержит SQL-выражение.

Слово "глобальная" абсолютно лишнее


 
Anatoly Podgoretsky ©   (2007-09-18 09:23) [3]

И вредное


 
Mery   (2007-09-18 09:32) [4]

Спасибо.
Нашла компоненты Ehlib, где DBGrid мертва по сравнению с DBGridEh.


 
Виталий Панасенко(дом)   (2007-09-18 10:23) [5]


> Mery   (18.09.07 09:32) [4]
>
> Спасибо.
> Нашла компоненты Ehlib, где DBGrid мертва по сравнению с
> DBGridEh.

Они то же переоткрывают НД
{*******************************************************}
{ Add this unit to "uses" clause of any unit of your    }
{ project to allow TDBGridEh to sort data in            }
{ TQuery automatically after sorting markers            }
{ will be changed.                                      }
{ TSQLDatasetFeaturesEh will try to find line in        }
{ TQuery.SQL string that begin from "ORDER BY" phrase   }
{ and replace line by "ORDER BY FieldNo1 [DESC],...."   }

{ using SortMarkedColumns.                              }
{*******************************************************}


 
Плохиш ©   (2007-09-18 11:24) [6]


> r9000   (18.09.07 08:51) [1]
>
> begin
>  QuerySQL := "SELECT * FROM Customer.DB";
>  Query1.SQL.Add(QuerySQL);
>  Query1.Open;
> end;

Глюкодром в действии...



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.01 c
2-1198665549
Ega23
2007-12-26 13:39
2008.01.27
Скрыть Excel


1-1193222862
Eisdolch
2007-10-24 14:47
2008.01.27
Мерцание при перерисовке


2-1198586565
Kolan
2007-12-25 15:42
2008.01.27
Запуск долгой операции через ADO, ошибка «Время ожидания вышло»&#133


2-1199106232
VID
2007-12-31 16:03
2008.01.27
Выход на свойства компонента, имея его имя


11-1182849398
robt
2007-06-26 13:16
2008.01.27
колесо и TrackBar




   Наверх