Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.30;
Скачать: CL | DM;

Вниз

Сортировка полей таблицы   Найти похожие ветки 

 
me2   (2003-06-05 17:13) [0]

Помогите найти решение вот какой задачи - есть DBGridEh (с возможностью отображения маркеров сортировки) в него отображаются данные SQL-запрса выбирающего инф-ю из нескольких таблиц. Как осуществить сортировку полей грида?


 
me2   (2003-06-05 17:37) [1]

Народ, ну подскажите. Очень нужна возможность сортировки данных в гриде


 
Sandman25 ©   (2003-06-05 17:42) [2]

Я с DBgridEh не работал, только читал об этом где-то.
У DBgridEh должно быть событие, возникающее при нажатии на заголовок колонки. В обработчике этого события необходимо изменить запрос Query.Close; Query.Sql.Text := "select ... order by " + ... и снова выполнить его Query.Open;
Там было еще написано что-то про альтернативный способ - "order by %" и DBGridEh1.Params[0], но этого я уже не помню.


 
Соловьев ©   (2003-06-05 18:02) [3]

и еще надо у поля выставить desc или asc в зависимоти от маркера сортировки грида;
...
oredr dy field1 asc; //по возрастанию
...
oredr dy field1 desc; //по убыванию


 
me2   (2003-06-05 18:17) [4]

Можно ли передать имя поля и тип сортировки для order by с помощью входного параметра?


 
Zacho ©   (2003-06-05 18:18) [5]


> me2 (05.06.03 17:37)
> Народ, ну подскажите. Очень нужна возможность сортировки
> данных в гриде

Данные сортируются не в гриде, а в подключенном к нему датасете.
Посмотри в дистрибутиве EhLib директорию DataService - там находятся модули для сортировки для различных компонентов доступа к БД.
А в общем случае надо написать обработчик события SortMarkingChanged, и в нем сортировать НД.
Вот пример, как собрать сторку ORDER BY .. в этом обработчике.
procedure TMyForm.MyDBGridEhSortMarkingChanged(Sender: TObject);
var
i:integer;
OrderList:string;
begin
OrderList:=" ";
for i:=0 to (Sender as TDBGridEh).SortMarkedColumns.Count-1 do
begin
OrderList:=OrderList+", "+(Sender as TDBGridEh).SortMarkedColumns.Items[i].FieldName;
if (Sender as TDBGridEh).SortMarkedColumns.Items[i].Title.SortMarker=smDownEh then
OrderList:=OrderList+" ASC"
else OrderList:=OrderList+" DESC";
end;
delete(OrderList,2,1);
OrderList:="ORDER BY "+OrderList;

... и т.д. ...

end;

В FIBPlus есть процедура для сортировки датасета без изменения ORDER BY и переоткрытия запроса, есть ли в IBX - не помню, а посмотреть сейчас не могу.


 
Zacho ©   (2003-06-05 18:19) [6]


> me2 (05.06.03 18:17)

Параметра чего ? Если запроса - то нельзя.



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

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

Наверх




Память: 0.48 MB
Время: 0.012 c
1-97713
DiXi123
2003-06-18 11:56
2003.06.30
Открытие файла перетаскиванием


1-97679
Nucl
2003-06-17 15:39
2003.06.30
icl библиотеки иконок


7-97898
Intell
2003-04-20 20:25
2003.06.30
Как создать ярлык для своего приложения?


14-97784
Кен
2003-06-10 03:46
2003.06.30
Как переходить кнопкой Tab на TBitBtn ? TBitBtn - удобны тем,


3-97521
Fantasy
2003-06-06 01:48
2003.06.30
Lookup-поля