2016-04-28 96 views
1

我已经创建了Oracle Forms 10g表单并希望通过按下按钮来显示LOV。在当-按钮按下扳机,我有:Oracle Forms 10g LOV第二次未显示

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

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

按钮和两个项目都在同一个数据块中,我将Update Allowed和Required设置为No,两个项目和Mouse都导航到No for按钮(我在几个论坛上看到了这个)。

+0

你用show_lov试过了吗? – pablomatico

+0

@pablomatico谢谢。是的,我尝试过'a_value_chosen:= Show_Lov('MY_LOV'); \t如果a_value_chosen THEN ...'但第二次a_value_chosen不为真既不为假,也为空。 – dragy

+0

当你打电话给show_lov时,你确定你当前的项目是myblock.item1吗? – pablomatico

回答

0

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

解决方案是,我首先更改窗体上的这些项目的值,然后我调用存储过程。它现在有效。

0

尝试把这两条线之间同步命令:

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

谢谢,我试过了,但没有奏效。一样的东西。 – dragy

+0

好吧,它不显示lov,但在那里的光标?或者光标在另一个项目上。 –

+0

游标位于另一个数据块和项目上,因为代码会在其他数据块中插入新记录。也许这会造成问题? – dragy