我有一个Oracle Forms应用程序。有一个带有日期字段的表单,我需要保留它的初始值(加载表单时),以便将其与字段中的实际值进行比较。表单上还有一个按钮,用于发布更改。
我试图用全局变量存储初始值,并检查它是否被更改,我也试图简单地检查:system.record_status!='QUERY'来跟踪日期是否被修改。
问题是,目前,当按下按钮并完成发布时,所有全局变量的值都为空,因此我无法将初始值与新值进行比较,并且:system.record_status再次变为“ QUERY”,如果用户修改了某些内容,我再也看不到。
如何保持初始值或跟踪数据已更改,无论用户发布更改与否无关紧要?
答案 0 :(得分:1)
这将起作用:
IF GET_ITEM_PROPERTY(:SYSTEM.CURSOR_ITEM,UPDATE_COLUMN) ='TRUE' THEN
Copy(Get_Item_Property(itm, Database_Value), :System.Cursor_Item);
答案 1 :(得分:1)
此:
问题是,当按下按钮并完成 post时,所有全局变量的值都将变为空,因此我无法将初始值与新值进行比较
不能那样工作。发布(如果您是内置POST
的用户)(也不是COMMIT
,因为我们正在使用它)不会清除全局变量。将其显式设置为NULL确实可以,因此-检查表单是否已在代码中的某处完成。怎么样?在调试模式下运行该表单,跟踪其执行并查看发生了什么。
可能出错的另一件事是全局变量的数据类型为CHAR
,因此-如果您打算将其与其他数据类型值进行比较,则应执行转换。由于它是日期值,请考虑将TO_DATE
函数应用于具有适当格式掩码的全局变量。