【问题标题】:Oracle Forms 10g LOV not showing up second timeOracle Forms 10g LOV 第二次没有出现
【发布时间】:2016-04-28 07:17:34
【问题描述】:

我创建了 Oracle Forms 10g 表单并希望通过按下按钮来显示 LOV。在When-Button-Pressed 触发器上我有:

go_item('MyBlock.Item1');
do_key('LIST_VALUES');

LOV 有 6 列,其中 2 列绑定到 2 个项目:MyBlock.Item1 和 MyBlock.Item2。当我按下按钮时,会出现 LOV,我可以做出选择。 LOV 将数据插入到 MyBlock.Item1 和 MyBlock.Item2 中,一切都很好。 但是,如果我想做出另一个选择并再次按下按钮,LOV 就不会出现。不知道是什么问题。

按钮和两个项目都在同一个数据块中,我将两个项目的“允许更新”和“必需”设置为“否”,将“鼠标导航”设置为“否”按钮(我在几个论坛上看到了这一点)。

【问题讨论】:

  • 你用show_lov试过了吗?
  • @pablomatico 谢谢。是的,我尝试过使用a_value_chosen := Show_Lov('MY_LOV'); IF a_value_chosen THEN ...,但第二次 a_value_chosen 不是 true 也不是 false,它是 null。
  • 当您调用 show_lov 时,您确定您当前的项目是 myblock.item1 吗?
  • 是的,因为我在 a_value_chosen := Show_Lov('MY_LOV'); 之前添加了 message('SYSTEM.CURSOR_ITEM = ' || :SYSTEM.CURSOR_ITEM); 并得到它是 MyBlock.Item1。
  • 第二次尝试表达爱有什么不同吗?查询中涉及的数据是否发生了变化?如果您在 show_lov 之后添加一条消息,它会显示吗?

标签: oracle10g oracleforms


【解决方案1】:

尝试将同步命令放在这两行之间:

go_item('MyBlock.Item1');
Synchronize;
do_key('LIST_VALUES');

【讨论】:

  • 谢谢,我试过了,但没用。同样的事情。
  • 好吧,它没有显示 lov,但是光标在那里?或光标在其他项目上。
  • 光标位于另一个数据块和项目上,因为代码在其他数据块上插入了新记录。也许这会造成问题?
  • 另一个数据块不是问题,但是光标应该在您调用list_values的那个项目上,如果光标不在那里,那么它不会显示lov。
  • 这行go_item('MyBlock.Item1'); 不就是为了那个目的吗?但是我在删除详细记录后放了那条线,当我第二次尝试弹出 LOV 时它是蓝色的,它是一样的。
【解决方案2】:

我终于找到了解决方案(使用 oracle 的 OTN 讨论)。 问题是我在第一次弹出 LOV 后调用的存储过程。第一次,在我选择了一个值后,我使用存储过程删除了另一个块的记录。在该过程中,我设置了 MyBlock.Item1 和 MyBlock.Item2 连接的列的值。但在表单上,​​旧值仍保留在项目上。我在程序中删除了更新这两列,它现在可以工作了。但我需要将这两个字段自动更新为 null。

解决方案是我首先更改表单上这些项目的值,然后调用存储过程。现在可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    相关资源
    最近更新 更多