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
函数应用于具有适当格式掩码的全局变量。
我有一个 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
函数应用于具有适当格式掩码的全局变量。