Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по фильтрации [D7, Paradox]


Страницы:   1 2

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 условиями, как Вы выразились был использован именно этот метод.
То, как Вы хотите, тоже решаемо. В конце концов, если Вы объединили так как Вам советовали и Вы предполагаете ошибку синтаксиса - возьмите отладчик и в нем посмотрите строку фильтра после объединения двух условий, выложите ее здесь.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо