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

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

Как в DBGrid сделать сортировку по клику на названию колонки [D7, Access]


Страницы:   1 2

Gawk ©   (2003-10-10 12:10:00) 

Здравствуй уважаемый ALL
Подскажите как в DBGRid сделать сортировку по клику на названию колонки


Reindeer Moss Eater   (2003-10-10 16:21:00) [21]

ADOQuery1.Close;

Если в DesignTime не были созданы экземпляры полей, то после этих строчек в гриде Colums уничтожаются


Reindeer Moss Eater   (2003-10-10 16:17:00) [22]

Эта ошибка никак не связано с кодом из [6].
Если конечно существует ADOQuery1


Gawk   (2003-10-10 16:14:00) [23]

Текст ошибки
Access violation at address .... in module ...
при клике на соответствующее таблице CPU поле


Reindeer Moss Eater   (2003-10-10 16:07:00) [24]

order by CPU."+Column.FieldName

А если торкнули по колонке с полем не из таблицы CPU????


dmtr   (2003-10-10 16:06:00) [25]


> Gawk © (10.10.03 15:57) [6]


ADOQuery1.SQL.Add(" order by CPU."+Column.FieldName);


Reindeer Moss Eater   (2003-10-10 16:04:00) [26]

Какую ошибку?


Плохиш_   (2003-10-10 16:02:00) [27]

>Gawk © (10.10.03 15:57) [6]

т.е. так и пишешь:

order by CPU.mol

? ;-)


Gawk   (2003-10-10 15:57:00) [28]

Ниже приведдённый код выдаёт ошибку на строке (o) не понимаю почему. Column.FieldName выдаёт имя поля правильно.

procedure TForm20.DBGrid1TitleClick(Column: TColumn);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add("select CPU.inventar,VIDEO.place,MB.mol");
ADOQuery1.SQL.Add(" from MB,CPU,VIDEO ");
ADOQuery1.SQL.Add("where MB.ID=CPU.ID and VIDEO.ID=CPU.ID");
(о)ADOQuery1.SQL.Add("order by CPU."+Column.FieldName);
ADOQuery1.Open;
end;


Arm79   (2003-10-10 15:28:00) [29]

Как вариант - использовать ClientDataSet, у которого индексы могут строится после открытия. Там указываешь в IndexFields поля и он сам их сортит.


Reindeer Moss Eater   (2003-10-10 12:29:00) [30]

Будет работать, если FieldName не является алиасом.

Будет работать даже если имя поля является алиасом.
Не будет работать - если поле не физическое.


Reindeer Moss Eater   (2003-10-10 12:27:00) [31]

Комментарий к [2]

Было написано

Получить имя поля кликнутой колонки.


Vlad   (2003-10-10 12:21:00) [32]

Комментарий к [1]
Получить имя не колонки, а поля, соотв. данной колонке, затем подставить его в ORDER BY
Т.е. "select * from table where .... order by " + Column.FieldName
Будет работать, если FieldName не является алиасом.


Reindeer Moss Eater   (2003-10-10 12:15:00) [33]

Получить имя поля кликнутой колонки.
Перестроить текст запроса (ORDER BY) | Изменить имя активного индекса
Переоткрыть запрос.


Страницы:   1 2

Наверх

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