我有一个带有两个数据块(除了控件),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存在。那么我该如何复制这样的功能呢?
P.S。我试过......
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;
我还需要更改key-exit上发生的事情,因为检查是否应该保存更改,但它基本上遵循相同的格式。
答案 0 :(得分:1)
您应该覆盖密钥提交触发器。 在此触发器中,您可以先阻止“B”并检查记录是否有效。 例如,如果B包含人名,名字和生日,并且名称是必需的,则只需检查名称是否为空。如果不是这种情况,则记录为空并且没有输入记录,如果名称不为空,则输入记录,如果您在项目上写了一些验证触发器,则在块B中至少有一条记录validate_record触发器然后您已确定记录有效。此时您可以在密钥提交触发器中执行commit_form,否则您可以发送消息。
您可能还需要检查的唯一事情是,如果没有删除块A中的记录,是否有人可以删除块B中的记录,因为那时块A中也没有记录。
亲切的问候