Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.01 c
3-78810
чайник
2003-11-05 08:39
2003.11.24
Обход системной ошибки


3-78764
pashaz
2003-11-02 20:33
2003.11.24
вывод в DBGrid


7-79197
Staryker
2003-09-08 21:51
2003.11.24
Как сделать чтобы комп не выключался?


6-79072
aj_ua
2003-09-30 15:17
2003.11.24
Разрыв Dial-up соединения под Windows 2000


3-78806
licherep
2003-11-05 10:11
2003.11.24
помогите сделать запрос





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский