Вниз
Скачать: 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.013 c
15-1197908559
Stepper
2007-12-17 19:22
2008.01.27
Castalia 3.* for Delphi 6, 7, 2005


3-1190274164
thely
2007-09-20 11:42
2008.01.27
Бесплатные утилиты для ремонта GDB?


1-1193122474
031178
2007-10-23 10:54
2008.01.27
Как программно выделить нужный пункт меню в TTreeView ?


2-1199041662
DmT
2007-12-30 22:07
2008.01.27
использование стандартного ввода/вывода для конс. приложений


15-1198348554
Dmitry S
2007-12-22 21:35
2008.01.27
Как настроить к себе людей?




   Наверх