【问题标题】:Ensure a data block has at least one record (Forms 10g)确保一个数据块至少有一条记录(Forms 10g)
【发布时间】:2013-07-12 22:45:42
【问题描述】:

我有一个包含两个数据块(除了用于控制)的表单,A 和 B。A 只支持一条记录,B 支持多条记录。插入 A 时,我想确保在 B 上插入至少一条记录。

我想做的是放入A的预插入触发器

go_block('B')
if record_count = 0 then
    message('Please enter in at least one b');
else
    --Other validation stuff
end if;

但是,据我所知,不存在类似 record_count 的函数。那么我该如何复制这样的功能呢?

附:我试过了……

go_block('B')
first_record
if :system.last_record = 'TRUE' then
    message('Please enter in at least one b');
else
    --Other validation stuff
end if;

这也不行。

编辑:

根据 nightfox 的建议,我在表单的关键提交部分执行了以下操作。

commit_form;

被替换为:

if :B.Value_That_Is_Required is null then
    message('Please enter in at least one b');
else
    commit_form;
end if;

我还需要更改键退出时发生的情况,因为它检查是否也应保存更改,但它基本上遵循相同的格式。

【问题讨论】:

    标签: oracle oracleforms


    【解决方案1】:

    您应该覆盖键提交触发器。 在此触发器中,您可以首先转到块“B”并检查记录输入是否有效。 例如,如果 B 包含人名、名字和出生日期,并且该名称是必需的,则只需检查该名称是否不为空。如果不是这种情况,则记录为空且未输入任何记录,如果名称不为空,则输入记录,并且如果您在项目上编写了一些验证触发器,则您在块 B 中至少有一条记录或validate_record 触发器,那么您已经确定记录是有效的。这时候可以在key-commit trigger中做一个commit_form,否则可以给个消息。

    您可能还需要检查的唯一一件事是是否没有人可以删除块 B 中的记录而不删除块 A 中的记录,因为那样您在块 A 中也没有记录。

    亲切的问候

    【讨论】:

    • 我是否只使用 go_block('b'), first_record,然后检查必填字段?
    猜你喜欢
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 2023-03-20
    • 2022-01-13
    • 1970-01-01
    相关资源
    最近更新 更多