![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в DBGrid сделать сортировку по клику на названию колонки [D7, Access]
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) | Изменить имя активного индекса
Переоткрыть запрос.