Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.01.27;
Скачать: 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 вся ветка

Текущий архив: 2008.01.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
1-1193240219
The X
2007-10-24 19:36
2008.01.27
Добавить в ComboBox графику


15-1198151898
Cj
2007-12-20 14:58
2008.01.27
System Volume Information - Ring3 access


2-1198874994
Efir
2007-12-28 23:49
2008.01.27
DoubleClick в OpenDialog


15-1198155786
Ega23
2007-12-20 16:03
2008.01.27
Я что-то пропустил?


15-1197531949
Vendict
2007-12-13 10:45
2008.01.27
phpDMclient и MOPS6(Apache 2.2.4, PHP 5.2.3, MySQL 5.0.37)