Как сохранить начальное значение поля после выполнения POST - PullRequest
1 голос
/ 28 апреля 2019

У меня есть приложение Oracle Forms.Существует форма с полем даты, и мне нужно сохранить ее начальное значение (при загрузке формы), чтобы сравнить ее с фактическим значением в поле.Также на форме есть кнопка, которая публикует изменения.

Я попытался сохранить начальное значение с помощью глобальной переменной и проверить, изменилось ли оно, также я попытался просто проверить это: system.record_status!= 'QUERY' для отслеживания изменения даты.

Проблема в том, что в момент нажатия кнопки и завершения публикации значения всех глобальных переменных становятся нулевыми, поэтому я не могу сравнить исходное значение с новым и: system.record_status становится 'QUERY'снова, и я больше не вижу, изменил ли пользователь что-то.

Как сохранить начальные значения или отследить, что данные были изменены, не имеет значения, изменяет ли пользователь сообщения или нет?

Ответы [ 2 ]

1 голос
/ 28 апреля 2019

Это:

Проблема в том, что в тот момент, когда кнопка нажата и отправка завершена, значения всех глобальных переменных становятся равными нулю , поэтому я не могу сравнить начальное значение с новым

не работает таким образом. Post (если вы ссылаетесь на POST встроенный) (ни COMMIT, как мы это делаем) не очищает глобальные переменные. Явно установка его в NULL делает, так что - проверьте форму, сделали ли вы это где-нибудь в своем коде. Как? Запустите форму в режиме отладки, проследите за ее выполнением и посмотрите, что происходит.

Другая вещь, которая может пойти не так, это то, что тип данных глобальных переменных равен CHAR, поэтому - если вы планируете сравнить его с другим значением типа данных, вы должны выполнить преобразование. Поскольку это значение даты, рассмотрите возможность применения функции TO_DATE к глобальной переменной с соответствующей маской формата.

1 голос
/ 28 апреля 2019

это будет работать:

     IF GET_ITEM_PROPERTY(:SYSTEM.CURSOR_ITEM,UPDATE_COLUMN) ='TRUE' THEN
     Copy(Get_Item_Property(itm, Database_Value), :System.Cursor_Item);
...