Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сортировка в 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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо