POST 完成后如何保持字段的初始值

How to keep initial value of a field after POST is done

我有一个 Oracle Forms 应用程序。有一个带有日期字段的表单,我需要保留它的初始值(加载表单时),以便将它与字段中的实际值进行比较。表格上还有一个按钮,posts 发生变化。

我尝试用全局变量存储初始值并检查它是否已更改,我还尝试简单地检查 :system.record_status != 'QUERY' 以跟踪日期是否已修改.

目前的问题是,当按下按钮并完成 post 时,所有全局变量的值都变为空,因此我无法将初始值与新值进行比较,并且:system.record_status 再次变为 'QUERY',如果用户修改了某些内容,我就再也看不到了。

如何保持初始值或跟踪数据已更改,与用户 post 是否更改无关?

这会起作用:

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

这个:

Problem that at the moment, when button is pressed and post is done the values of all global variables become null, so I can't compare the initial value with the new one

这样不行。 Post(如果您指的是内置的 POST)(也不是 COMMIT,正如我们所说的那样)不会清除全局变量。明确地将其设置为 NULL 确实如此 - 检查表单是否已在代码中的某处完成。如何? 运行调试模式下的表单,跟踪其执行并查看发生了什么。

另一件可能出错的事情是全局变量的数据类型是 CHAR 所以 - 如果您打算将它与不同的数据类型值进行比较,您应该执行转换。由于它是日期值,请考虑将 TO_DATE 函数应用于具有适当格式掩码的全局变量。