Задание фильтра строкой
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Задание фильтра строкой
С6.3
Есть строка CFIL='AGE(S_S:DATE_R) >=36 AND S_S:ACT=1' Как ее вставить в репорт в качестве фильтра
Есть строка CFIL='AGE(S_S:DATE_R) >=36 AND S_S:ACT=1' Как ее вставить в репорт в качестве фильтра
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: Задание фильтра строкой
Это что ли?
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: Задание фильтра строкой
А если все таки CFIL то смотри в сторону BIND, EVALUATE и сюда:
По моему ничего не путаю. Давно не пользовался.Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Re: Задание фильтра строкой
С6.3 АВС
Строка получается в программе и должна использоваться в качестве фильтра в репорте. EVALUATE я пытался вставлять, не проходит
Строка получается в программе и должна использоваться в качестве фильтра в репорте. EVALUATE я пытался вставлять, не проходит
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: Задание фильтра строкой
Ни черта не помню но вот так работает.Lenkov писал(а):С6.3 АВС
Строка получается в программе и должна использоваться в качестве фильтра в репорте. EVALUATE я пытался вставлять, не проходит
Переменные таблицы, DAT:ID и DAT:Line по моему автоматом биндятся.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Re: Задание фильтра строкой
У меня это выглядит вот так
CFIL='AGE(S_S:DATE_R) ' &VOZ &' ' &VOZ1 &' ' &'AND S_S:ACT=1'
ThisReport.SetFilter(CFIL)
Не катит
CFIL='AGE(S_S:DATE_R) ' &VOZ &' ' &VOZ1 &' ' &'AND S_S:ACT=1'
ThisReport.SetFilter(CFIL)
Не катит
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: Задание фильтра строкой
там все примитивно. Все должно работать. Проверить EMBED куда вставил.Lenkov писал(а):У меня это выглядит вот так
CFIL='AGE(S_S:DATE_R) ' &VOZ &' ' &VOZ1 &' ' &'AND S_S:ACT=1'
ThisReport.SetFilter(CFIL)
Не катит
MESSAGE(CFIL) поставить... и т.д.
Параметр SetFilter передается в ViewManager от которого наследуется ProcessClass
Если косяк в BIND, отчет должен по идее ругаться.
Может быть просто в логике проблема или SetFilter не в том месте!?
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Игорь Столяров
- Ветеран движения
- Сообщения: 8031
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
Re: Задание фильтра строкой
Там зависит от структуры VIEW.Lenkov писал(а):У меня это выглядит вот такCFIL='AGE(S_S:DATE_R) ' &VOZ &' ' &VOZ1 &' ' &'AND S_S:ACT=1'ThisReport.SetFilter(CFIL)Не катит
Универсальный способ - полная реинициализация View при смене фильтра.
ThisReport.AddSortOrder(...)
ThisReport.AddRange(...)
ThisReport.SetFilter(...)
Make Clarion Great Again ! 
-
- ✯ Ветеран ✯
- Сообщения: 5161
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Задание фильтра строкой
Если ещё не решили проблему. У меня так. В Методе ApplyFilter после Parent Call вставляю Embed:
Здесь репорт по одной таблице, поэтому префиксов нет. Думаю, с не SQL будет аналогично.
Код: Выделить всё
Process:View{prop:SQLFilter} = '((dat_uv is null) or (not dat_uv is null))'
We are hard at work… for you. 

Re: Задание фильтра строкой
А Кларионовский фильтр точно осведомлён насчёт фунцкции Age ?
У меня фильтр с пользовательской функцией не срабатывал, функция просто не вызывалась, даже будучи забинденной.
Обходил (с чувством глубокого отвращения), удалив вызов функции из фильтра и добавив в метод ValidateRecord
If not age(....) then return (record:filtered).
У меня фильтр с пользовательской функцией не срабатывал, функция просто не вызывалась, даже будучи забинденной.
Обходил (с чувством глубокого отвращения), удалив вызов функции из фильтра и добавив в метод ValidateRecord
If not age(....) then return (record:filtered).
Re: Задание фильтра строкой
там все примитивно. Все должно работать. Проверить EMBED куда вставил.
MESSAGE(CFIL) поставить... и т.д.
Параметр SetFilter передается в ViewManager от которого наследуется ProcessClass
Если косяк в BIND, отчет должен по идее ругаться.
Может быть просто в логике проблема или SetFilter не в том месте!?[/quote]
Заработало!! Я его точно не туда воткнул.
Большое спасибо
MESSAGE(CFIL) поставить... и т.д.
Параметр SetFilter передается в ViewManager от которого наследуется ProcessClass
Если косяк в BIND, отчет должен по идее ругаться.
Может быть просто в логике проблема или SetFilter не в том месте!?[/quote]
Заработало!! Я его точно не туда воткнул.
Большое спасибо
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: Задание фильтра строкой
Да все прекрасно работает если писатьkreator писал(а):Если ещё не решили проблему. У меня так. В Методе ApplyFilter после Parent Call вставляю Embed:Здесь репорт по одной таблице, поэтому префиксов нет. Думаю, с не SQL будет аналогично.Код: Выделить всё
Process:View{prop:SQLFilter} = '((dat_uv is null) or (not dat_uv is null))'
Process:View{PROP:Filter} = 'условие проверки'
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: Задание фильтра строкой
Да. Думаю там используется EVALUATE, который о функции AGE знает.Yufil писал(а):А Кларионовский фильтр точно осведомлён насчёт фунцкции Age ?
Пример бы. Тестовый вариант прекрасно работает.Yufil писал(а):У меня фильтр с пользовательской функцией не срабатывал, функция просто не вызывалась, даже будучи забинденной.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: Задание фильтра строкой
И кстати ТС!
Выполните код MESSAGE(AGE(TODAY()-1000)) и посмотрите на результат. А потом откорректируйте свое условие в фильтре.
Думаю ваш вопрос сразу решится.
Выполните код MESSAGE(AGE(TODAY()-1000)) и посмотрите на результат. А потом откорректируйте свое условие в фильтре.
Думаю ваш вопрос сразу решится.
The AGE procedure returns a string containing the time elapsed between two dates. The age return string is in the following format:
1 to 60 days - 'nn DAYS'
61 days to 24 months - 'nn MOS'
(2 years + 1 month) to 999 years - 'nnn YRS'
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса