【问题标题】:How to keep initial value of a field after POST is donePOST完成后如何保持字段的初始值
【发布时间】:2019-09-17 02:10:00
【问题描述】:

我有一个 Oracle Forms 应用程序。有一个带有日期字段的表单,我需要保留它的初始值(加载表单时),以将其与字段中的实际值进行比较。表单上还有一个按钮,可以更改帖子。

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

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

如何保持初始值或跟踪数据已更改,无论用户是否发布更改?

【问题讨论】:

标签: sql oracle plsql oracleforms


【解决方案1】:

这个:

目前的问题是,当按下按钮并发布完成后,所有全局变量的值都变为空,所以我无法将初始值与新值进行比较

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

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

【讨论】:

  • 其实你的答案并没有解决问题,而是你引导我找到答案。所以,我通过调试检查了代码......帖子不是问题的原因。导致全局变量和记录状态“重置”的真实代码(对于第二种情况是正确的),它是对 EXECUTE_QUERY 命令的调用。我所做的是:将全局变量的值保存到本地变量,然后将其设置回来。谢谢你的回答,真的很有帮助!!!
  • 不客气!我告诉过你 POST 不应该受到责备。我很高兴你修好了。感谢您告知我们!
【解决方案2】:

这将起作用:

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

【讨论】:

    猜你喜欢
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 2022-08-13
    • 1970-01-01
    • 2013-07-06
    • 1970-01-01
    相关资源
    最近更新 更多