Простая арифметика дат в Oracle APEX - PullRequest
1 голос
/ 07 декабря 2011

То, что мне нужно сделать, на мой взгляд, невероятно просто. На самом деле так просто, что это, вероятно, очевидно, и поэтому я не могу найти место, где документируется, как это сделать.

Мне нужно только взять значение элемента страницы средства выбора даты (: P1_DATE_1) и с помощью динамического действия установить значение второго элемента страницы средства выбора даты (: P1_DATE_2). Значение (: P1_DATE_2) должно быть на 2 года или 730 дней больше значения (: P1_DATE_1). Так что все, что мне нужно, это простое выражение «+730», верно?

У меня это работало с использованием sysdate в качестве даты начала для этого расчета. Приведенное ниже выражение PL / SQL дает соответствующий вывод:

    to_char(sysdate + 730,'dd-MON-rr') 

Но тогда я не смог заставить его принять значение элемента страницы. У меня уже есть действия и все настроено, но я просто не могу заставить его работать, когда пытаюсь заменить: P1_DATE_1 для sysdate. Я пробовал столько же различных проявлений этого выражения, используя элемент страницы, но он не заполняет элемент 2-й страницы.

Извините за, возможно, глупый вопрос, но если кто-то может помочь, я был бы признателен. Спасибо!

Ответы [ 2 ]

2 голосов
/ 07 декабря 2011

@ Джастин Кейв прав: все значения в элементах страницы обрабатываются как varchar2

Что касается вашего динамического действия, это то, что я настроил: Регион:

items

Динамическое действие (добавлена ​​дата 2):

dynamic action

Истинное действие:

true action

1 голос
/ 07 декабря 2011

Вы получаете ошибку? Если так, то какая ошибка? Поскольку элементы страницы в APEX всегда являются строками, вам необходимо преобразовать их в даты, прежде чем выполнять арифметику с ними. Примерно так должно работать, если предположить, что P1_DATE_1 также в формате DD-MON-RR.

to_char( add_months( to_date( :P1_DATE_1, 'DD-MON-RR' ),
                     24 ),
         'DD-MON-RR' )

Если вы не получаете ошибку, а второй элемент просто не имеет значения по умолчанию, я предполагаю, что у вас есть проблема порядка операций. Вы уверены, что первый элемент фактически имеет ненулевое значение при запуске кода инициализации для второго элемента? Если вы пытаетесь установить значение во втором элементе на основе значения, которое человек выбирает во время выполнения в первом средстве выбора даты, вам нужно либо отправить страницу, либо вам понадобится немного Javascript.

...