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

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

почему не происходит сортировки? [D7, MSSQL]


Страницы:   1 2

Kinder ©   (2003-10-29 19:53:00) 

procedure Ttableform.findtextChange(Sender: TObject);
begin
With moduledata.Query do begin
SQL.Text:="SELECT * FROM people WHERE fio LIKE """+findtext.Text+"%""";
Open;
end
end;

end.


Почему при написанном коде не происходит сортировки? В гриде как были записи так и остались неотсортированными по запросу.


Vlad   (2003-10-30 09:55:00) [21]

>Kinder (29.10.03 21:07) [5]
Пройди дебаггером и посмотри что происходит при вводе текста в поле findtext.
Потом нам расскажешь.


paul_k   (2003-10-30 09:12:00) [22]

1. Query.sql.savetofile("filename")Текст из этого файла в аналайзер и смотреть как запрос сформировался.
DbGrid просто отображает этот результат.
2. Сначала написать в Query Analiser правильный , работающий запрос, а потом текст его подставить в AdoQuery.Sql сделав в нужных местах подстановку из форм.


aus   (2003-10-30 01:51:00) [23]

а вообще для такой задачи использовать запрос в ответ на каждую введенную букву - слишком тяжко, лучше пользуйся фильтром, а сортировку задай при открытии набора записей

Query.Filtered := true;
Query.Sort := "fio"

Query.Filte := "fio like LIKE """+findtext.Text+"%""";

Возможно придется вместо % использовать *.


aus   (2003-10-30 01:46:00) [24]

а вставляя " order by Нужное_Поле" ?


Kinder   (2003-10-29 21:07:00) [25]

Не работает :(
В общем у меня работает это через ADOQuery. В DBGrid данные должны быть такие, чтобы при изменении поля ввода fintext уни удовлетворяли условию запроса.
Например я ввожу "Сергей", то в таблице должны отображаться данные где FIO начинается на "Сергей", а этого не происходит почему-то :( Даже вставляя Close;


Vlad   (2003-10-29 20:36:00) [26]


> Kinder (29.10.03 20:15) [2]

Тут мне что-то навеяло. Может приступ телепатии или еще что-то.
Возможно тебя интересует не сортировка, а обновление набора данных. Если это так, то:

procedure Ttableform.findtextChange(Sender: TObject);
begin
With moduledata.Query do begin
close;
SQL.Text:="SELECT * FROM people WHERE fio LIKE """+findtext.Text+"%""";
Open;
end
end;


Vlad   (2003-10-29 20:26:00) [27]

В твоем SQL предложении нет ORDER BY, поэтому данные возвращаются в неупорядоченном виде.

procedure Ttableform.findtextChange(Sender: TObject);
begin
With moduledata.Query do begin
SQL.Text:="SELECT * FROM people WHERE fio LIKE """+findtext.Text+"%""" + " order by Нужное_Поле";
Open;
end
end;


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

Каким макаром?


Vlad   (2003-10-29 19:58:00) [29]

наверное потому что ты забыл их отсортировать...


Страницы:   1 2

Наверх

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