Форум: "Базы";
Текущий архив: 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