【问题标题】:Clearing one block before entering query mode in another在进入另一个块中的查询模式之前清除一个块
【发布时间】:2015-01-10 08:21:27
【问题描述】:

在我问我的问题之前,我必须说我正在处理的数据库没有外键,所以我不能制作主从块,因此我正在使用解决方法go_block、clear_block、execute_query 和触发器。

我有一个包含两个块的表单。如果我们假设两个块都填充了信息,并且我想对第一个块执行查询,有没有办法在进入查询模式之前清除另一个块?

e.g.

Block1: ID, NAME, SURNAME

Block2: INFO1, INFO2, ..., Id_block1 etc.

因此,如果两个块上都有信息,并且我在 Block1 上进入查询模式,整个块将被清除,因此我可以输入搜索条件,但第二个块仍然具有上次执行查询的数据。有没有办法清除第二个块上的数据?再次,当我在 Block1 上处于 ENTER-QUERY 模式时,我想清除 Block2 中的数据。

Workflow: Enter-query mode Block1, execute-query Block1, NEW-RECORD-INSTANCE trigger activates (where workflow continues), go_block('Block2'), execute_query on Block2 (with where clause Id_block1 = block1.id).

我正在使用 Oracle Forms 10g。感谢您提供的任何帮助。

【问题讨论】:

  • 虽然强烈建议添加参照完整性约束,但您仍然可以在没有添加参照完整性约束的情况下在 Forms 中建立主从块关系。添加详细块时,出现“创建关系”对话框,取消选中“自动加入数据块”,然后手动输入加入条件。
  • 对,正如@JeffreyKemp 所说,您可以在没有外键关系的情况下建立主从关系。

标签: oracle plsql oracle10g oracleforms


【解决方案1】:

可以在表单中创建块之一时创建 MASTER-DETAIL 关系

您可以在 KEY-ENTQRY 触发器上写下以下内容:

go_block('block2');
clear_block;
go_block('block1');
enter_query;

之后block1会进入enter-query模式,你可以搜索数据并执行block。

【讨论】:

    猜你喜欢
    • 2019-08-23
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    相关资源
    最近更新 更多