Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Forms Новый топик    Ответить
 Сохранить начальное значение поля после POST-a  [new]
jrqq4-h7h2v
Member

Откуда:
Сообщений: 5
Доброго времени!

Есть приложение на Oracle forms. В приложении форма "Детали заказа", с меню. По клику на пункте меню, в новой сессии запускается отчет BI-publisher по выбранному заказу.

На форме есть поле "Дата". Проблема в том, что, так как отчет запускается в новой сессии, то, пока пользователь не нажмет ОК - изменения, сделанные в форме не закоммитятся, и отчет будет строиться по старой дате.

Чтобы обработать эту ситуацию решено, при запуске отчета, проверять изменилась ли данные в поле "Дата" и выводить предупреждение. Пробовал реализовать следующими способами:
1. В WHEN-WINDOW-ACTIVATED записывать начальное значение даты в глобальную переменную и при запуске отчета сравнивать с текущим значением, выдавать предупреждение, если дата изменилась
2. Проверять :sysem.record_status, если он не равен 'QUERY' - выводить сообщение

Все работает, НО!!!! На форме есть кнопка "Применить", по нажатию выполняется POST, после чего :sysem.record_status снова становится равным 'QUERY', а значение глобальной переменной равным NULL. Получается, что изменения в другой сессии ЕЩЕ не видны, а в этой сессии УЖЕ не видны )))

Вопрос - как сохранить начальные значения поля или статус записи в форме, после выполнения команды POST? Если решение в принципе не верно и есть другие способы решить данную задачу - буду рад совету.
27 апр 19, 22:41    [21873539]     Ответить | Цитировать Сообщить модератору
 Re: Сохранить начальное значение поля после POST-a  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7989
1.
Не знаю )))
2.
Не очень понимаю Вашу проблему. Если это Ваша собственная форма, то Вы и так должны знать, когда выдавался POST, когда COMMIT. Выглядит так, что форма/задача поставлена крайне криво и проблема не техническая, а исключительно организационная.
3.
Можно попытаться определять средствами сервера. В главном подфоруме знатоков собственно Oracle Database полно, возможно смогут что-то посоветовать.
IMHO & AFAIK Если был POST, то транзакция на сервере должна быть активна (должны были быть выполнены insert'ы,update'ы,delete'ы), т.е. можно попытаться проверить на уровне сервера, а не Forms'ов. Беглый поиск по Инет выдал ссылку:

https://stackoverflow.com/questions/1299694/oracle-how-to-find-out-if-there-is-a-transaction-pending
29 апр 19, 15:21    [21874476]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Forms Ответить