Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.24;
Скачать: CL | DM;

Вниз

почему не происходит сортировки?   Найти похожие ветки 

 
Kinder   (2003-10-29 19:53) [0]

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-29 19:58) [1]

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


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

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


 
Vlad ©   (2003-10-29 20:26) [3]

В твоем 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;


 
Vlad ©   (2003-10-29 20:36) [4]


> 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;


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

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


 
aus ©   (2003-10-30 01:46) [6]

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


 
aus ©   (2003-10-30 01:51) [7]

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

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

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

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


 
paul_k ©   (2003-10-30 09:12) [8]

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


 
Vlad ©   (2003-10-30 09:55) [9]

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


 
Kinder   (2003-10-30 19:05) [10]

да нормально. щас попробую через файл.


 
kinder   (2003-10-31 22:02) [11]

как это аналайзером?


 
Kinder   (2003-10-31 22:15) [12]

2aus

кинь нормальный код, если не трудно, а то твой вставил, так ругается

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.


 
paul_k ©   (2003-11-01 07:26) [13]


> как это аналайзером?

программа есть такая Query Analiser
входит в состав MsSql


 
Kinder   (2003-11-01 13:11) [14]

F чего аналайзить. Скрипт правильно работает. Но не выводит почему-то.


 
paul_k ©   (2003-11-01 14:42) [15]

Или правильно работает или не выводит.
сам селект у тебя что возвращает?


 
Kinder   (2003-11-01 15:43) [16]

select возвращает то что надо.
просто это не отображается в таблице. вот в чем запарка.


 
paul_k ©   (2003-11-01 19:44) [17]

то ли я ... хмм.. то ли одно из двух.
1. как можно узнать возвращает ли селект то чото надо, если результат не отображается.
2. см. пункт 1


 
Kinder   (2003-11-01 21:30) [18]

Да я просто просматриваю дебаггером делфийским переменную, в которую передается запрос.


 
paul_k ©   (2003-11-02 08:33) [19]

о как...
и Дата сет, который возвращает этот запрос тоже в дебагере видно?
Если да, то для меня это новость


 
Kinder   (2003-11-02 19:16) [20]

А причем тут датасет? Я говорю про массив, который возвращает запрос.


 
sniknik ©   (2003-11-02 19:53) [21]

Kinder (02.11.03 19:16) [20]
определись в терминах, тебя непонятно ... ;о)

запрос возвращает рекордсет, его непосредственная "обертка" датасет. а масив про который ты говориш никто не знает, и врядли догадается если ты не обьясниш что именно это (его) имееш ввиду, и самое главное что под ним подразумеваеш.


 
aus ©   (2003-11-02 20:32) [22]

Query.Filtered := true;//это задаешь в Object Inspector
Query.Sort := "fio";//это пишешь в FormCreate

Query.Filter := "fio like LIKE """+ findtext.Text +"%"""; //это фрагмент твоего кода, еслинеправильно - то здесь и ошибка.


 
paul_k ©   (2003-11-03 09:16) [23]

sniknik
Спасибо за поправку
именно Рекордсет и имел в виду.


 
VAleksey ©   (2003-11-03 11:42) [24]


> Vlad © (29.10.03 20:36)

Любое изменение текста SQL запроса ведет к закрытию курсора.


 
Vlad ©   (2003-11-03 11:48) [25]

>VAleksey © (03.11.03 11:42) [24]
Это я знаю. Так порядка ради сказал, и, отчасти потому что изначально вопрос задан некорректно.
И вобще, странные вещи тут происходят. Либо автор чего-то не договаривает, либо... [4] должно работать.


 
VAleksey ©   (2003-11-03 12:59) [26]


> Vlad © (03.11.03 11:48)

Автор не понимает разницу между Group by, Order By и вообще не владеет терминологией БД. ИМХО.


 
VAleksey ©   (2003-11-03 13:01) [27]

Извините

> VAleksey © (03.11.03 12:59) [26]

Не к этой ветке относится. :-((.
Но в принципе и к этой пойдет ;-)


 
Kinder   (2003-11-04 00:07) [28]

Query.Filter := "fio like LIKE """+ findtext.Text +"%"""; //это фрагмент твоего кода, еслинеправильно - то здесь и ошибка. нет не моего.


 
Stas ©   (2003-11-04 08:53) [29]

Лучше через параметры - быстрее будет
declare @text as nvarchar(50)
SET @text= :par
...//твой запрос

Where FIO like @text
Тип параметра ставишь ftString;
И на событие Edit, OnChange пишешь код
AdoQuery1.Parameters[0].value:="%"+Edit1.text+"%"
AdoQuery1.requery()



Страницы: 1 вся ветка

Текущий архив: 2003.11.24;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.024 c
1-79042
&R
2003-11-13 14:16
2003.11.24
Пергрузка операторов в Delphi


1-78981
Алла
2003-11-14 14:42
2003.11.24
Будте добры, как с помощью GetDC


8-79061
Andry
2003-07-28 00:19
2003.11.24
Скорость нажатия клавиш


14-79168
shved111
2003-10-31 18:48
2003.11.24
нужна прога на Дельфи. срочно. ОПЛАЧУ. (Москва)


3-78767
Кщд
2003-11-05 08:11
2003.11.24
Рассылка сообщений сообщений подключенным к БД пользователям