Взаимодействие select list и date picker в apex oracle
у меня есть select list и date picker, в select list расположен список классов с 1 по 11, при выборе класса, например 2 происходит запрос , который считает до какого года будет длится карта льготника, если учащийся во втором классе, то 11-2 = 9, к текущему году прибавляется 9 и получаем, что действие карты кончается в 2033 году. Почему то при выборе класса не появляется дата в date picker, хотя запрос составлен верно, в чем может быть причина ? ORACLE APEX
SELECT TO_CHAR(to_date((ADD_MONTHS(SYSDATE, (11 - :P9_SELECT_CLASS) * 12))), 'DD-MM-YYYY') FROM dual;
мой запрос по какой-то причине не хочет выводить в date picker посчитанную дату, но если написать другой запрос то всё работает, неужели проблема с запросом и apex не хочет его выполнять? потому что я тестил запрос в dbeaver и там всё работает.
Свой запрос я тестил и результат такой: нет вывода даты, НО после обновления страницы через кнопку , дата вписывается, но совершенна не та, я полагаю он вписывает предпоследнюю. Например был выбран 1 класс, затем 11, после нажатия на кнопку страница (именно region) обновляется и вписывается дата 1 класса. Очень странное поведение. Я тестил отдельно от того наполнения, что было там в region, и оно тоже также себя вело, значит проблема в моих настройках... Когда написал другой запрос который просто прибавляет +1 год к текущей дате то всё работает. Значит проблема именно в запросе?
upd1: Мне кажется запрос попросту не хочет работать в apex и его нужно просто каким-то образом видоизменить...
upd2: Я упростил запрос, думал это сработает (нет, не сработало), GPT отвечал следующее:
Видимо, проблема возникает из-за того, как APEX обрабатывает динамические действия и вычисление дат. Несмотря на apex.server.process
, apex_item.get_item_property
, true
или false
, APEX может пытаться выполнить ADD_MONTHS
перед тем, как значение P9_SELECT_CLASS
будет установлено в select list
.
упрощенный запрос без функции ADD_MONTHS:
SELECT TO_CHAR ((SYSDATE + (11 - :P9_SELECT_CLASS) * 365), 'DD-MM-YYYY') FROM dual;
upd3: В общем и целом по моим тестам я понял, что проблема заключается в переменной, в которую мы хотим передать (:P9_SELECT_CLASS) значение из списка. Я не проверял будет ли работать это для Text Field. Свою проблему я решил так: для каждого класса я написал отдельный запрос для вычета, ничего лучше кроме как этого костыля мне не пришло в голову.
Сам запрос выглядит теперь так:
SELECT TO_CHAR ((SYSDATE + (11 - 0) * 365), 'DD-MM-YYYY') FROM dual;
Теперь всё работает, но я не знаю нормально ли, что теперь у одной кнопки 11 практически одинаковых Dynamic Action.