1

我有一个带有两个数据块(除了用于控制)的表单,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 的函数。那么我将如何复制这样的功能呢?

PS我试过...

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;

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

4

1 回答 1

1

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

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

亲切的问候

于 2013-07-11T21:27:34.710 回答