Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
3-97523
NewD
2003-06-06 09:42
2003.06.30
Добавление Calc - field во время вып-я


14-97827
Sab
2003-06-06 21:26
2003.06.30
Исходник игры Xonix


1-97705
MakNik
2003-06-18 10:27
2003.06.30
SaveDialog


1-97742
FRT
2003-06-18 16:40
2003.06.30
Объединение ячеек в StringGrid


1-97670
KPY
2003-06-17 08:18
2003.06.30
Как два байта преобразовать в слово





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский