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

Posted

技术标签:

【中文标题】在 Oracle Forms 10g 中动态设置“Copy value from item”的值【英文标题】:Dynamically set the value of "Copy value from item" in Oracle Forms 10g 【发布时间】:2020-08-25 14:31:48 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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

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

然后创建PRE-QUERYBLOCK3块级触发器并设置为

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

【讨论】:

成功了!我必须将 :parameter.caller 放在控制块中,并在预查询中使用 CASE 而不是解码。非常感谢!

以上是关于在 Oracle Forms 10g 中动态设置“Copy value from item”的值的主要内容,如果未能解决你的问题,请参考以下文章

在 Oracle Forms 10g 中使用 LOV 值过滤数据块

Oracle Forms 10g 自动查询

Oracle Forms 10g Tutorial Ebook Download - Oracle Forms Blog

如何将 Forms 10g 中创建/修改的 Form(FMB) 降级为 Oracle Forms 9

Oracle Forms 10g,多次插入和更新不起作用

从 Oracle Forms 10g WebUtil 执行 SUSE Linux 命令