Задание фильтра строкой
Модератор: Дед Пахом
					Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию 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
 - Администратор
 - Сообщения: 4022
 - Зарегистрирован: 05 Июль 2005, 15:59
 - Откуда: Хабаровск
 - Благодарил (а): 59 раз
 - Поблагодарили: 42 раза
 - Контактная информация:
 
Re: Задание фильтра строкой
Это что ли?
			
			
									
						Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
			
						- Admin
 - Администратор
 - Сообщения: 4022
 - Зарегистрирован: 05 Июль 2005, 15:59
 - Откуда: Хабаровск
 - Благодарил (а): 59 раз
 - Поблагодарили: 42 раза
 - Контактная информация:
 
Re: Задание фильтра строкой
А если все таки CFIL то смотри в сторону  BIND, EVALUATE и сюда:
По моему ничего не путаю. Давно не пользовался.
			
			
									
						Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
			
						Re: Задание фильтра строкой
С6.3 АВС
Строка получается в программе и должна использоваться в качестве фильтра в репорте. EVALUATE я пытался вставлять, не проходит
			
			
									
						Строка получается в программе и должна использоваться в качестве фильтра в репорте. EVALUATE я пытался вставлять, не проходит
- Admin
 - Администратор
 - Сообщения: 4022
 - Зарегистрирован: 05 Июль 2005, 15:59
 - Откуда: Хабаровск
 - Благодарил (а): 59 раз
 - Поблагодарили: 42 раза
 - Контактная информация:
 
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
 - Администратор
 - Сообщения: 4022
 - Зарегистрирован: 05 Июль 2005, 15:59
 - Откуда: Хабаровск
 - Благодарил (а): 59 раз
 - Поблагодарили: 42 раза
 - Контактная информация:
 
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 не в том месте!?
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
			
						- Игорь Столяров
 - Ветеран движения
 - Сообщения: 8269
 - Зарегистрирован: 07 Июль 2005, 10:19
 - Откуда: г. Ростов-на-ДоМу
 - Благодарил (а): 34 раза
 - Поблагодарили: 106 раз
 
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(...)
За теми, кто отстал, не возвращаться ! 
 Кодекс
			
						- 
				kreator
 - ✯ Ветеран ✯
 - Сообщения: 5235
 - Зарегистрирован: 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
 - Администратор
 - Сообщения: 4022
 - Зарегистрирован: 05 Июль 2005, 15:59
 - Откуда: Хабаровск
 - Благодарил (а): 59 раз
 - Поблагодарили: 42 раза
 - Контактная информация:
 
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
 - Администратор
 - Сообщения: 4022
 - Зарегистрирован: 05 Июль 2005, 15:59
 - Откуда: Хабаровск
 - Благодарил (а): 59 раз
 - Поблагодарили: 42 раза
 - Контактная информация:
 
Re: Задание фильтра строкой
Да. Думаю там используется EVALUATE, который о функции AGE знает.Yufil писал(а):А Кларионовский фильтр точно осведомлён насчёт фунцкции Age ?
Пример бы. Тестовый вариант прекрасно работает.Yufil писал(а):У меня фильтр с пользовательской функцией не срабатывал, функция просто не вызывалась, даже будучи забинденной.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
			
						- Admin
 - Администратор
 - Сообщения: 4022
 - Зарегистрирован: 05 Июль 2005, 15:59
 - Откуда: Хабаровск
 - Благодарил (а): 59 раз
 - Поблагодарили: 42 раза
 - Контактная информация:
 
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'
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
			
						