![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по фильтрации [D7, Paradox]
Tugodym © (2004-05-07 12:36:00)Есть два условия для фильтра:
1) Table1.Filter:='Fam ='''+Edit1.text+'*''and konec<'+ quotedstr(datetostr(date));
2) Table1.Filter:='Fam ='''+Edit1.text+'*''or kolich=0';
которые по отдельности работают нормально, подскажите как эти два условия обьедениять в одно через OR.
Tugodym (2004-05-08 08:46:00) [1]Блин перепутал
HSolo © (07.05.04 16:56) [26]
Спасибо вам огромное все работает...
Это было адресовано вам Мунька
Tugodym (2004-05-07 17:01:00) [2]HSolo © (07.05.04 16:56) [26]
Спасибо вам огромное все работает....
HSolo и вам тоже спасибо....
P.S. когда я писал свой вопрос, я даже недумал что мне на него коректно ответят, у думал что посыпяться различные издёвки, типа "Иди почитай книги" "И ты еще хочешь стать програмистом?"
и т.д. Хорошо что вы есть, спасибо!!!!
HSolo (2004-05-07 16:56:00) [3]>он находит того человека которого я ввел в Edit и вдобавок отображает всех тех у кого количество рано нулю
И правильно делает :) Ибо именно об этом Вы его попросили.
Ваш фильтр выглядит так:
условие1 and условие2 or условие3
И каково будет значение этого выражения при условии3=true, и как оно будет зависеть от значений условия1 и условия2 ?
Приоритет логических операций, однако...
Мунька (2004-05-07 16:53:00) [4]Table1.Filter:='Fam ='''+Edit1.text+'*''and (konec<'+ quotedstr(datetostr(date))+'or kolich=0)';
Tugodym (2004-05-07 16:50:00) [5]Мунька © (07.05.04 16:35) [20]
Скомпелировалась нормально, но работает также как и этот фильтр
Table1.Filter:='Fam ='''+Edit1.text+'*''and konec<'+ quotedstr(datetostr(date))+'or kolich=0';
Обьясню поподробней, у меня есть три поля
1) Имя
2) Дата (konec)
3) Количество (kolich)
И мне надо сделать так чтобы при вводе фамилии ,
поиск происходил или при условии что Дата меньше седнешней или
( OR) или количество равно нулю...
А при фильтре который написан выше (в этом сообщении ), он находит того человека которого я ввел в Edit и вдобавок отображает всех тех у кого количество рано нулю.
Мунька (2004-05-07 16:47:00) [6]
> HSolo ©
У него компилятор, похоже ошибку выдает
HSolo (2004-05-07 16:38:00) [7]>Мунька © (07.05.04 16:35) [20]
Боюсь, это не совсем то условие, что нужно вопрошающему
>Tugodym
Как пишете?
Мунька (2004-05-07 16:37:00) [8]>Если записать два условия раздельно, то никакой ошибки нету, >ошибка компиляции появляется при записи двух условий в один >фильтр через OR.
Конечно появится, надо писать так
Filter:= 'ваши условие1'+ ' OR '+ 'ваше условие 2'
Мунька (2004-05-07 16:35:00) [9]Table1.Filter:='Fam ='''+Edit1.text+'*''and konec<'+ quotedstr(datetostr(date))+ ' OR ' + 'Fam ='''+Edit1.text+'*''or kolich=0';
Tugodym (2004-05-07 16:34:00) [10]Мунька © (07.05.04 16:32) [18]
Если записать два условия раздельно, то никакой ошибки нету, ошибка компиляции появляется при записи двух условий в один фильтр через OR.
Мунька (2004-05-07 16:32:00) [11]Подождите, Вы хотите сказать, что у вас выдается ошибка на этапе компиляции???
Tugodym (2004-05-07 16:26:00) [12]HSolo © (07.05.04 16:16) [16]
Я вас понял, только перед этим надо сначала обьеденить эти два условия, чтобы хотябы програма запустилась, а уже потом смотреть на ошибку, только вот я никак немогу соблюсти синтаксис условия....
HSolo (2004-05-07 16:16:00) [13]Тогда киньте на форму TEdit. В коде после формирования строки фильтра напишите:
Edit1.Text := Table1.Filter;
Запустите программу. Нажмите кнопку (или что там у Вас), к-рая формирует условие фильтра. Скопируйте содержимое Edit1... дальше понятно :)
Tugodym (2004-05-07 16:08:00) [14]Немогу, :(
Я незнаю как это сделать...
Мунька (2004-05-07 15:59:00) [15]Да поставьте точку останова на моменте соединения двух строк, а после соединения используйте Evalute/Modify для Table.Filter и скопируйте строку на форум
Tugodym (2004-05-07 15:55:00) [16]Эх, если бы я мог.....
Tugodym (2004-05-07 15:55:00) [17]Эх, если бы я мог.....
HSolo (2004-05-07 15:52:00) [18]>Tugodym (07.05.04 15:49) [10]
Не хотите переделывать - это другое дело, но при чем тут "абсолютно не подходит"? Не переделывайте, кто ж Вас заставляет :) просто корректно сформируйте строку фильтра
Tugodym (2004-05-07 15:49:00) [19]HSolo © (07.05.04 15:40) [8]
Зачем мне все это делать(переделывать), если у меня почти все готово осталось только обьеденить в один фильтр.
Мунька (2004-05-07 15:44:00) [20]>Этот метод мне абсолютно неподходит, так как в программе >используются около 20 разных условий фильтрации, который >назначены разным кнопкам...
Поверьте мне, что у меня в одной программе с 20 условиями, как Вы выразились был использован именно этот метод.
То, как Вы хотите, тоже решаемо. В конце концов, если Вы объединили так как Вам советовали и Вы предполагаете ошибку синтаксиса - возьмите отладчик и в нем посмотрите строку фильтра после объединения двух условий, выложите ее здесь.