![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как проще всего отсортировать dbgrid по щелчку на колонке?
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]Данные в нем тоже не лежат, "сортировать" надо набор данных