![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сортировка в DBGrid [D7, IB6.x, dBase, FoxPro, Paradox]
Mery © (2007-09-18 08:23:00)Как вы решаете вопрос с сортировкой данных в dbgrid?
Подскажите, как по щелчку на заголовке столбца настроить сотрировку вверх-вниз? Если по запросу используя order by,то это требует переоткрытие данных.
И как задать программе по какому столбцу идёт сортировка, чтобы это было универсально для любого столбца?
Плохиш (2007-09-18 11:24:00) [1]
> r9000 (18.09.07 08:51) [1]
>
> begin
> QuerySQL := 'SELECT * FROM Customer.DB';
> Query1.SQL.Add(QuerySQL);
> Query1.Open;
> end;
Глюкодром в действии...
Виталий Панасенко(дом) (2007-09-18 10:23:00) [2]
> 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. }
{*******************************************************}
Mery (2007-09-18 09:32:00) [3]Спасибо.
Нашла компоненты Ehlib, где DBGrid мертва по сравнению с DBGridEh.
Anatoly Podgoretsky (2007-09-18 09:23:00) [4]И вредное
MsGuns (2007-09-18 09:14:00) [5]>r9000 (18.09.07 08:51) [1]
>QuerySQL, это глобальная строка, которая содержит SQL-выражение.
Слово "глобальная" абсолютно лишнее
r9000 (2007-09-18 08:51:00) [6]На форме расположены 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;