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

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

как проще всего отсортировать dbgrid по щелчку на колонке?


Страницы:   1 2 3

ironwit ©   (2002-12-26 10:18:00) 

глупо но интересно :-)


ironwit   (2002-12-26 11:59:00) [21]


> Weare © (26.12.02 11:54)
>
> >to ironwit ©
>
>
> Могу и EhLib выслать, занимает где-то 1.2М. Вообще класная
> вещь, там можно очень интересные вещи вытворять.

плс, на pteh01@pteh.sm.energy.gov.ua
нарезка по 800кб


Weare   (2002-12-26 11:54:00) [22]


>to ironwit ©


Могу и EhLib выслать, занимает где-то 1.2М. Вообще класная вещь, там можно очень интересные вещи вытворять.


ironwit   (2002-12-26 11:51:00) [23]


> Roma © (26.12.02 11:42)
> Здравствуйте... Опять я опоздал, наверно...
>
> Насчет сортирвоки по клику - был простой и гениальный
> совет от Кулюкина Олега (Кулюкин Олег © (26.12.02 10:36))
> - использовать TClientDataSet, т.е. не Query -> DataSource
> -> DBGrid, а Query -> DataSetProvider -> ClientDataSet ->
> DataSource -> DBGrid. По клику на колонке:
>
> procedure TForm1.DBGrid1TitleClick(Column: TColumn);
> begin
> ClientDataSet1.IndexFieldNames := Column.Field.FieldName;
> end;
>
> Все... Никаких переделок запроса в Query.
>
> Другой вопрос - а это действительно тебе надо? А то пользователей
> разбалуешь... ;)


громадное спасибо, попробую.

Ниче страшного, их балую - сам росту над собой. :-)


Roma   (2002-12-26 11:42:00) [24]

Здравствуйте... Опять я опоздал, наверно...

Насчет сортирвоки по клику - был простой и гениальный совет от Кулюкина Олега (Кулюкин Олег © (26.12.02 10:36)) - использовать TClientDataSet, т.е. не Query -> DataSource -> DBGrid, а Query -> DataSetProvider -> ClientDataSet -> DataSource -> DBGrid. По клику на колонке:

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
ClientDataSet1.IndexFieldNames := Column.Field.FieldName;
end;

Все... Никаких переделок запроса в Query.

Другой вопрос - а это действительно тебе надо? А то пользователей разбалуешь... ;)


ironwit   (2002-12-26 11:27:00) [25]


>
> Reindeer Moss Eater (26.12.02 11:18)
> А щелкнуть по двум колонкам одновременно успеешь?
> :)

вряд-ли :-)


Reindeer Moss Eater   (2002-12-26 11:18:00) [26]

А щелкнуть по двум колонкам одновременно успеешь?
:)


ironwit   (2002-12-26 11:15:00) [27]

я вот подумал, а если нужно по нескольким одновременно? :-)


ironwit   (2002-12-26 11:14:00) [28]


> Lady D © (26.12.02 11:09)
>
> procedure TForm1.DBGrid1TitleClick(Column: TColumn);
> begin
> DBGrid1.DataSource.DataSet.Active := false;
> With TQuery(DBGrid1.DataSource.DataSet).SQL do
> begin
> Clear;
> Add("SELECT ......");
> Add("ORDER BY " + Column.FieldName);
> end;
> DBGrid1.DataSource.DataSet.Active := true;
> end;

там запросы хранятся разные, но ладно. Идея понятна :-)
Спасибо


Lady D   (2002-12-26 11:09:00) [29]


procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
DBGrid1.DataSource.DataSet.Active := false;
With TQuery(DBGrid1.DataSource.DataSet).SQL do
begin
Clear;
Add("SELECT ......");
Add("ORDER BY " + Column.FieldName);
end;
DBGrid1.DataSource.DataSet.Active := true;
end;


Val   (2002-12-26 11:08:00) [30]

явный пример - вместо того чтобы подумать - ставим новый компонент. :(


ironwit   (2002-12-26 11:06:00) [31]

а где EhDBGrid можно найти?

Weare © (26.12.02 10:57)
Можно просто используя TQuery и TDbGridEh сортировать по каждой колонке, да хоть по обеим сразу. У EhhLib есть демка на этот счет. Если хочеш, могу на мыло скинуть - там разберешься (если конечно у тебя Eh- есть)


хорошо бы, но когда EhDBGrid найду.


Weare   (2002-12-26 10:57:00) [32]

Можно просто используя TQuery и TDbGridEh сортировать по каждой колонке, да хоть по обеим сразу. У EhhLib есть демка на этот счет. Если хочеш, могу на мыло скинуть - там разберешься (если конечно у тебя Eh- есть)


sniknik   (2002-12-26 10:47:00) [33]

Надо менять компоненты для доступа (у тебя какие?), возьми ADO любой запрос любой сложности неважно, по клику узнаеш имя поля (не проблема), и меняеш свойство Sort (сортирует сам датасет).
пример
ADODataSet1.Sort:= "LastName ASC, DateDue DESC"; //по одному еще проще


Anatoly Podgoretsky   (2002-12-26 10:40:00) [34]

ironwit © (26.12.02 10:35)
Усложнять ничего не надо, надо изменить фразу ORDER BY


ironwit   (2002-12-26 10:40:00) [35]

Кулюкин Олег © (26.12.02 10:36)
2 ironwit © (26.12.02 10:18)
>> Reindeer Moss Eater (26.12.02 10:20)
>> dbGrid отсортировать нельзя
>Верно замечено.

>> точнее данные в нем(там лежит сложный sql запрос).
>В Гриде ничего не лежит, данные лежат в ДатаСете.
>Можно:
>1. Подключить к Вашей квере TClientDataSet, он умеет строить >индексы, как Asc, так и Desc.
>2. Использовать не дельфийный грид, а что-то более хитрое. ВРоде EhDBGrid умеет сортироваться.

а где его можно было бы найти?

Lady D © (26.12.02 10:37)

> ясно. :-(
> усложнить запрос не получиться там уже хватает и Order By
> и group by :-(

А на каком движке все это работает?


mysql


Reindeer Moss Eater   (2002-12-26 10:39:00) [36]

Убери dbgrid.
Отображай данные например в TStringGrid.
Используй метод CustomSort в классе TStringList.


Lady D   (2002-12-26 10:37:00) [37]


> ясно. :-(
> усложнить запрос не получиться там уже хватает и Order By
> и group by :-(

А на каком движке все это работает?


Кулюкин Олег   (2002-12-26 10:36:00) [38]

2 ironwit © (26.12.02 10:18)
> Reindeer Moss Eater (26.12.02 10:20)
> dbGrid отсортировать нельзя
Верно замечено.

> точнее данные в нем(там лежит сложный sql запрос).
В Гриде ничего не лежит, данные лежат в ДатаСете.
Можно:
1. Подключить к Вашей квере TClientDataSet, он умеет строить индексы, как Asc, так и Desc.
2. Использовать не дельфийный грид, а что-то более хитрое. ВРоде EhDBGrid умеет сортироваться.


ironwit   (2002-12-26 10:35:00) [39]

ясно. :-(
усложнить запрос не получиться там уже хватает и Order By
и group by :-(

Ладно, будем думать. А так хотел юзерам приятное сделать ....


Anatoly Podgoretsky   (2002-12-26 10:33:00) [40]

Данные в нем тоже не лежат, "сортировать" надо набор данных


Страницы:   1 2 3

Наверх

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