Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2007, 12:03   #1
Cyn4uk
Пользователь
 
Регистрация: 25.11.2007
Сообщений: 56
По умолчанию Сортировка DBGrid

Поиск юзал, просмотрел все тем 20 по его результатам, но что-то ничего для себя не откопал =(

Итого мы имеем DBGrid и нам нужно по нажатии на title отсортировать по тому заголовку, на который мы нажали.

Делаю SQL запрос, но выскакивает ошибка при нажатии на титл. Раньше сортировку через SQL не делал, поэтому не очень ориентируюсь.

Код:
  dm.fq.Active := false;
  dm.fq.SQL.clear;
  dm.fq.SQL.add('select * from Table_zakaz where [Íîìåð]="' + form1.zakcb.Text + '"');
  dm.fq.SQL.Add('order by "' + dbt1.selectedfield.AsString +'"');
  dm.fq.Active := true;
Ошибка в строчке dm.fq.SQL.Add('order by "' + dbt1.selectedfield.AsString +'"');

заранее спасибо!
Cyn4uk вне форума Ответить с цитированием
Старый 19.12.2007, 12:54   #2
Cyn4uk
Пользователь
 
Регистрация: 25.11.2007
Сообщений: 56
По умолчанию

пробовал так:
Код:
  dm.fq.Active := false;
  dm.fq.SQL.clear;
  QuerySQL:='select * from Table_zakaz where [Íîìåð]="' + form1.zakcb.Text + '"';
  dm.fq.SQL.add(QuerySQL);
  dm.fq.SQL.Add('order by' + column.FieldName);
  dm.fq.Active := true;
Выскакивает ошибка order by. Хотя в инете этот способ признан рабочим.
Cyn4uk вне форума Ответить с цитированием
Старый 19.12.2007, 15:09   #3
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

используй EhLib, там уже всё реализовано в два клика
dron-s вне форума Ответить с цитированием
Старый 19.12.2007, 16:12   #4
Cyn4uk
Пользователь
 
Регистрация: 25.11.2007
Сообщений: 56
По умолчанию

Цитата:
Сообщение от dron-s Посмотреть сообщение
используй EhLib, там уже всё реализовано в два клика
Да, я решил не мучатся, установил и настроил уже. Но все-таки из принципа нужно этот вопрос разобрать =)
Cyn4uk вне форума Ответить с цитированием
Старый 19.12.2007, 19:20   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Cyn4uk Посмотреть сообщение
Да, я решил не мучатся, установил и настроил уже. Но все-таки из принципа нужно этот вопрос разобрать =)
Так ORDER BY делается по ИМЕНИ поля, а не по его ЗНАЧЕНИЮ!
Во втором варианте вы хоть и перемудрили с процессом присвоения SQL, но зато использовали именно ИМЯ поля, правда, забыли сделать перед ним пробел...

Последний раз редактировалось mihali4; 19.12.2007 в 19:23.
mihali4 вне форума Ответить с цитированием
Старый 19.12.2007, 19:55   #6
Cyn4uk
Пользователь
 
Регистрация: 25.11.2007
Сообщений: 56
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Так ORDER BY делается по ИМЕНИ поля, а не по его ЗНАЧЕНИЮ!
Во втором варианте вы хоть и перемудрили с процессом присвоения SQL, но зато использовали именно ИМЯ поля, правда, забыли сделать перед ним пробел...
Блин, как обычно долго мучаешься из-за какого-то пустяка =)

Спасибо, буду знать =)
Cyn4uk вне форума Ответить с цитированием
Старый 18.02.2008, 14:31   #7
ГОСЕАН
Форумчанин
 
Аватар для ГОСЕАН
 
Регистрация: 03.05.2007
Сообщений: 247
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Так ORDER BY делается по ИМЕНИ поля, а не по его ЗНАЧЕНИЮ!
Во втором варианте вы хоть и перемудрили с процессом присвоения SQL, но зато использовали именно ИМЯ поля, правда, забыли сделать перед ним пробел...
Очень Вам признателен Михалыч. Я использовал Ваш метод, но вот одна проблема. После сортировки (очень удачно делает) все названия колонок написанные на русском языке (в титуле Caption) исчезли, все названия полей. Как сделать, чтобы при сортировке названия в Титуле на русском сохранялись?
ГОСЕАН вне форума Ответить с цитированием
Старый 18.02.2008, 14:36   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Выскакивает ошибка order by
Правильно выскакивает.
dm.fq.SQL.Add('order by' + column.FieldName); Тут между by и FieldName нет пробела, там получается если поле называется Pole1 то получается order byPole1
Ессно ошибка...

Цитата:
Так ORDER BY делается по ИМЕНИ поля, а не по его ЗНАЧЕНИЮ!
Сортировка делается либо по имени поля либо по нимеру колонки.

Цитата:
ГОСЕАН
У меня такой вариант работает и ничего не исчезает.
I'm learning to live...

Последний раз редактировалось Stilet; 18.02.2008 в 14:38.
Stilet вне форума Ответить с цитированием
Старый 18.02.2008, 16:16   #9
ГОСЕАН
Форумчанин
 
Аватар для ГОСЕАН
 
Регистрация: 03.05.2007
Сообщений: 247
По умолчанию

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
witzh Query1 do
begin
DisableControls;
Close;
SQL.Clear;
SQL.Add('Select * From dbo.firm');
SQL.Add('ORDER BY ' + Column.FieldName);
Open;
// Восстанавливаем настройки заголовка
DBGrid1.Columns.RestoreDefaults;
Column.Title.Font.Color := clBlue;
EnableControls;
end;
end;

Тогда, что я не так сделал? Все русские названия в титуле колонок исчезли.
ГОСЕАН вне форума Ответить с цитированием
Старый 18.02.2008, 19:31   #10
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Так а это вы зачем делаете???
Цитата:
DBGrid1.Columns.RestoreDefaults;
Что такое Defaults?
Вы же сами сбрасываете то, что настроили ранее...
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DBGrid+DBGrid Alex_666 БД в Delphi 11 19.06.2008 08:43
DBGRID Devikss Помощь студентам 1 28.05.2008 20:20
1. Сортировка Шелла по убыванию 2. Сортировка вставками по убыванию Arkuz Помощь студентам 1 25.09.2007 17:16
Сортировка в DBGrid Wiser87 БД в Delphi 1 05.05.2007 23:21