【问题标题】:Oracle Forms - Enable / disable tabular list item rows based on the query dataOracle Forms - 根据查询数据启用/禁用表格列表项行
【发布时间】:2019-10-04 19:21:24
【问题描述】:

我有一个文本项('TXT_EG_PER')和一个列表项('LI_P')作为数据块('DB')中的表格,如图所示。 我想根据行数据单独启用/禁用列表项。

我使用了“TXT_EG_PER”的 WHEN-VALIDATE-ITEM 触发器。我的代码:

IF smt..    THEN
    SET_ITEM_PROPERTY  ('DB.LI_P',
                     ENABLED,
                     property_true);
ELSE
    SET_ITEM_PROPERTY  ('DB.LI_P',
                     ENABLED,
                     property_false);
END IF;

但它会启用或禁用所有列表项。我想基于行来做。

【问题讨论】:

    标签: oracle oracle10g oracleforms


    【解决方案1】:

    请改用SET_ITEM_INSTANCE_PROPERTY。它的用法在 Forms 在线帮助系统中有描述。看一下,因为它没有和SET_ITEM_PROPERTY 内置的参数一样,例如

    set_item_instance_property(item, record, property value);
    

    在你的情况下,可能

    SET_ITEM_INSTANCE_PROPERTY  ('DB.LI_P',
                                 :system.trigger_record,
                                 ENABLED,
                                 property_true);
    

    【讨论】:

    • 我收到“'SET_ITEM_INSTANCE_PROPERTY' 的声明太多与此调用匹配”错误。
    • 这意味着您可能误用了它。检查文档。
    • 我将 :system.trigger_record 分配给一个变量并使用了这个变量。这个错误消失了。然后我检查了文档。我可能的相关属性(10g):“INSERT_ALLOWED、NAVIGABLE、VISUAL_ATTRIBUTE”。我尝试了所有这些但没有奏效。我应该使用哪一个?我在 LI_P 的“WHEN-NEW-ITEM-INSTANCE”触发器中使用了这个,是不是错了?我的财产价值应该是多少?我是 Oracle 表单的新手
    • NAVIGABLE 可能是最接近您需要的,即 - 如果满足某些条件 - 用户无法导航到该项目(因此无法修改它)。我不知道为什么它不起作用;它应该
    • 我意识到我无法很好地解释它。记录实际上是满的。 TXT_EG_PER 文本字段已满。列表项('LI_P')为空白。所以我在相关数据块的“POST-QUERY”触发器中使用了 UPDATE_ALLOWED 并且它起作用了。这是最终情况:SET_ITEM_INSTANCE_PROPERTY ('DB.LI_P', current_record, UPDATE_ALLOWED, PROPERTY_TRUE);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 2019-07-17
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    相关资源
    最近更新 更多