在 Oracle Forms 10g 中动态设置 "Copy value from item" 的值

Dynamically set the value of "Copy value from item" in Oracle Forms 10g

假设我创建了一个 BLOCK2 作为 BLOCK1 的副本。 BLOCK3 是 BLOCK1 的细节块,我也想将它重新用于 BLOCK2。 BLOCK3.FOREIGN_KEY 正在使用“从项目复制值”属性 将其值引用到 BLOCK1.PRIMARY_KEY。 如何动态设置“从项目复制值”属性 以引用调用块的主键?

我尝试清除 BLOCK3.FOREIGN_KEY 的“从项目复制值”并通过调用 BLOCK3 的按钮设置其值,但它不起作用。

如果我没理解错的话,您想显示 BLOCK3(详细)数据,具体取决于它的主数据是 BLOCK1 还是 BLOCK2

如果是这样,请删除您目前使用的 属性。您必须以某种方式让 Forms 知道哪个块是源;一种选择是在每个 BLOCK1BLOCK2 中使用 buttons,这会将 parameter 设置为所需的值。他们的 WHEN-BUTTON-PRESSED (WBP) 触发器将是

:parameter.caller := 'block1';  -- block2 for BLOCK2's WBP trigger    
go_block('block3');
execute_query;

然后创建PRE-QUERYBLOCK3block-level触发器并设置为

:block3.foreign_key_item := decode(:parameter.caller, 'block1', :block1.id,
                                                      'block2', :block2.id);