Использование переменной в фильтре представления
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Чт Авг 18, 2011 12:39  Использование переменной в фильтре представления |
|
Полезность: Нет оценки
|
Добрый день,
не могу решить, казалось бы простую задачу, использовать переменную заданную в фильтре в условии представления.
Например по кнопке фильтр запрашиваем дату P_DATE которую пользователь успешно вводит.
В колонках представления вытаскиваю дату последней операции C_DATE_LAST.
А в свойствах на вкладке условия хочу сравнить A2_1.C_DATE_LAST < P_DATE
Как передать переменную в условие? Пытался в фильтре по кнопке формулы сравнить, как это с обычными датами делал - не прокатывает их за того, что там отображается дата вот так {&C_DATE_LAST}<[P_DATE] выпадает в ошибку, говорит что ожидает тип нумбер, а передается тип дата. На попытки преобразовать [P_DATE] в число говорит неправильное число.
Может кто подскажет как использовать переменную в условии?
Заранее благодарю. |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Чт Авг 18, 2011 12:56   |
|
Полезность: Нет оценки
|
через контекст, например
фильтр
executor.set_context('DATE_BEGIN', to_char(P_DATE_BEGIN, 'dd.mm.yyyy'));
в формуле написать 1=1
представление
в условии
A2_1.C_DATE_LAST < to_date(sys_context(user_context, 'DATE_BEGIN'),'DD.MM.YYYY') [/code] |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Чт Авг 18, 2011 13:25   |
|
Полезность: Нет оценки
|
1. В фильтре стоит P_DATE типа DATE
2. executor.set_context('DATE_BEGIN', to_char(P_DATE, 'dd.mm.yyyy')); правильно понял, это в Глобальные описания операции писать?
3. При компиляции представления выпадает ошибка:
"user_context" - недопустимый идентификатор |
|
 |
lexus Профи
Вступление в Клуб: 28.09.2007
|
Чт Авг 18, 2011 13:31  Re: Использование переменной в фильтре представления |
|
Полезность: Нет оценки
|
yaffil пишет: | {&C_DATE_LAST}<[P_DATE] выпадает в ошибку, говорит что ожидает тип нумбер, а передается тип дата. |
Мне кажется тут & лишний. Был глючок в админе, что он не к месту его подставляет иногда.
Тип колонки C_DATE_LAST - дата? |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Чт Авг 18, 2011 13:36  Re: Использование переменной в фильтре представления |
|
Полезность: Нет оценки
|
yaffil пишет: | что там отображается дата вот так {&C_DATE_LAST}<[P_DATE] выпадает в ошибку, говорит что ожидает тип нумбер, а передается тип дата. На попытки преобразовать [P_DATE] в число говорит неправильное число.
|
Уберите & - это обозначении ссылки, либо в представлении настройте реквизит не как ссылку, а как дату.
executor.set_context('DATE_BEGIN', to_char(P_DATE_BEGIN, 'dd.mm.yyyy')); запускается в теле.
в настройках Компиляция - установите Расширенный синтаксис |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Чт Авг 18, 2011 14:06   |
|
Полезность: Нет оценки
|
Написал в теле, после расширенного синтаксиса - оно откомпилировалов, спасибо.
Но в условиях представления всё равно выдаётся эта ошибка.
Я тчно там пишу его (свойство представления - вкладка условие).
Что такое [/code] на конце, при таком написании выпадает ошибка компилятора - не хватает правой скобки
В условиях написал (тут все скобки есть): A2_1.C_DATE_LAST < to_date(sys_context(user_context, 'DATE_BEGIN'),'DD.MM.YYYY') [/code]
А отладчик почему то подставляет левую скобку: AND (A2_1.C_DATE_LAST < to_date(sys_context(user_context, 'DATE_BEGIN'),'DD.MM.YYYY') [/code]
В колонках представления дата последней операции стоит как дата.
(реквизит C_DATE_LAST в финансовых счетах) |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Чт Авг 18, 2011 14:22   |
|
Полезность: Нет оценки
|
[/code] это закрывающий тэг - он в IBSO нафиг не нужен  |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Чт Авг 18, 2011 15:27   |
|
Полезность: Нет оценки
|
Не компилится представление, нашел похожий вариант, все так же, но мой ошибку выдает
1. Написал тело (скомпилилось - ОК)
begin
executor.set_context('DATE_BEGIN', P_DATE);
end;
2. В представлении в свойствах на вкладке условие написал:
sys_context(user_context, 'DATE_BEGIN') = A2_1.C_DATE_LAST
3. Выпадает ошибка:
ORA-20100: ORA-00904: "USER_CONTEXT": недопустимый идентификатор
ORA-00904: "USER_CONTEXT": недопустимый идентификатор
Что я делаю не так (это не PL+ представление (колонки собирал встроенным билдером), может в этом затык?
З.Ы. Сильно не пинайте, я первый раз систему вижу и дедуктивным методом осваиваю  |
|
 |
markoff Участник - экстремал
Вступление в Клуб: 09.06.2009
|
Чт Авг 18, 2011 15:42   |
|
Полезность: Нет оценки
|
сделайте преобразования к дате |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Чт Авг 18, 2011 15:45   |
|
Полезность: Нет оценки
|
to_date(sys_context( user_context,'DATE_BEGIN','DD/MM/YYYY')) = A2_1.C_DATE_LAST
Пробовал - не помогает, да и ошибка не на формат. |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Чт Авг 18, 2011 16:07   |
|
Полезность: Нет оценки
|
Всем спасибо, допёрло. Разогнал мою предыдущюю мысль. Надо вот так написать:
sys_context( /*PL+*/user_context/*PL-*/,'DATE_BEGIN') = A2_1.C_DATE_LAST |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|