确保数据块至少有一条记录(表格10g)

时间:2013-07-11 17:38:35

标签: oracle oracleforms

我有一个带有两个数据块(除了控件),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上发生的事情,因为检查是否应该保存更改,但它基本上遵循相同的格式。

1 个答案:

答案 0 :(得分:1)

您应该覆盖密钥提交触发器。 在此触发器中,您可以先阻止“B”并检查记录是否有效。 例如,如果B包含人名,名字和生日,并且名称是必需的,则只需检查名称是否为空。如果不是这种情况,则记录为空并且没有输入记录,如果名称不为空,则输入记录,如果您在项目上写了一些验证触发器,则在块B中至少有一条记录validate_record触发器然后您已确定记录有效。此时您可以在密钥提交触发器中执行commit_form,否则您可以发送消息。

您可能还需要检查的唯一事情是,如果没有删除块A中的记录,是否有人可以删除块B中的记录,因为那时块A中也没有记录。

亲切的问候