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