Проблемы с фильтрацией (IBQuery)
4833
27
вообщем проблема в следующем, есть IBQuery1, его нужно отфильтровать по заданному значению которое помещается в Edit1.text. Текст программы следующий:
IBQuery1.Filter:="FIO="+chr(39)+edit1.text+"*"+chr(39);
IBQuery1.Filtered:=true;
IBQuery1.Refresh;(и вот этот рефреш не работает падла) :dnknow:
gorlan
Буду рад любому совету, если в синтаксисе ошибка подправьте, если подругому можно процедуру описать подскажите как. :а\?:
gorlan
А как именно не работает? выдает пустой датасет?
если можешь, долбанись в аську, которая в профиле указана
gorlan
Может лучше фильтр этот не использовать (если логика задачи позволяет), а засунуть его в Where самого запроса, через параметр?
Господин Уэф!
Каким образом это сделать? Мне нужно сделать фильтрацию по элементу, ну допустим у меня таблица ФИО и телефон
Есть допустим Пупкин, так я хочу набрать в едите1.текст: Пуп
нажать button и он находил позицию в таблице, как это он делал под таблицу парадокс.
craxx
Типо говорит нельзя метод Refresh применять. ну не помню точно но примерно так. а без рефреша не работает)
craxx
аськи нет порты заблокироаны, все заблокировано.
gorlan
А что нибудь такое
Query.Active:=false;
Query.Clear
Query.Add('Сам запрос в кавычках')
Query.Add('where FIO='+chr(39)+edit1.text+'*')
Query.Active:=true;
Turbokey
попробую как вариант, хотя сомневаюсь, это в SQL лезть а я так хочу просто.
Turbokey
кстати в InterBase почти тоже самое что и в Paradox 7 и BDE)))
gorlan
IBQuery1.Filter:="FIO="+chr(39)+edit1.text+"*"+chr(39);
И чему в конце концов равно это свойство IBQuery1.Filter?
gorlan
Только сейчас обратил внимание
Кавычки (FIO='' и т.п.)должны быть одинарными!
craxx
ну товарищи не думайте что я чайник уж до такой степени, просто это я на память писал, а не на носители код программы принес, все вышеописанное может я не так уж синтаксис донес, очень хорошо работало на paradoxe 7 и BDE, фильтрация была по table1 я просто заменил на IBQuery1, а она не работает я не вижу тут ошибок и совета прошу как правильно?
gorlan
IBQuery1.Filter:='FIO=Пуп*';
кажись должно быть IBQuery1.Filter:='FIO="Пуп*"';
tpi
да пофиг как, это работало и работает я даже над ним не задумывался не разу проблема то в IBQuery1.refresh; точно в этом и не в чем больше именно эту строчку как сменить или вообще мне нужен итог я не знаю к ними как прийти ошибка тока в refresh бредложите чего нибудь а не копайтесь в коде, код написан правильно только функционалу не отвечает
gorlan
проблема то в IBQuery1.refresh
Зачем он нужен, этого должно быть достаточно:
IBQuery1.Filter:=...
IBQuery1.Filtered:=true;
gorlan
Не понимаю.... зачем использовать то - что у тебя глючит .... где вероятность, что сейчас ты сделаешь - а потом у тебя неожиданно где нить этот косяк опять всплывет ??
На сколько я знаю из собственных познаний ... ФИЛЬТР работает с уже отобранными данными ... внутри датасета ... поэтому делать для него рефреш не совсем корректно ...
P.S. Все написано выше, надо проверять. Сам никогда не работал с фильтрацией ...
Turbokey
мне нужно по неполному текстовому значению поля, найти это самое поле. вот так. Допустим я хочу найти поле с заполненной фамилией пупкин. я хочу ввести не полное значение допустим: 'пуп' и чтоб он мне указал на поле пупкин. вот что я хочу а как к этому прийти не знаю. второй день бьюсь
Turbokey
просто есть таблица соответствия номеров фамилии, я хочу находить по неполной фамилии номера.
gorlan
Не пробовали использовать параметры фильтрации FilterOptions?

IBQuery1.Filter := 'пуп*';
IBQuery1.FilterOptions := [foNoPartialCompare];
IBQuery1.Filtered := True;
Audrey
попробую но тут синтаксис все равно надо изменить.
Audrey
Даже обидно, нифига не работает все выше перечисленное не работает, даже готов IBTable отфильтровать, но не получается, смог достичь только такого результата что по полному значению поля его находит, а мне бы по неполному, помогите товари очень надо(((( :cray-1:
Audrey
SELECT * FROM Table WHERE FIO LIKE 'Пуп%'
gorlan
попробую вот так вечером, надеюсь получится а то буксую на одном месте((((
gorlan
нехилая головоломка попалась вроде, как элементарно ватсон, а решения за три дня я так и не нашел.
gorlan
Послушай совета, брось фигней маяться и обрати свой взор на SQL. Найди Мартина Грабера "Введение в SQL" любого года издания и решишь свою задачу в 5 сек.
Zahodun
Уже решил. Дело сдвинулось :ха-ха!: