OracleForms-表单成功在密钥提交中变为真,尽管存在数据库错误
我的表单中有一个名为OracleForms-表单成功在密钥提交中变为真,尽管存在数据库错误,oracle,oracleforms,Oracle,Oracleforms,我的表单中有一个名为oncelik的文本项,表中还有一列。我已经为列创建了唯一索引,因此记录不能重复 当用户输入重复数据并尝试提交时,下面的代码在键提交触发器中运行,并在提交表单行之后运行ON_ERROR触发并显示类似“您不能输入重复数据”的错误信息 之后,提交触发器继续运行,form\u success变为true,因此表单也会显示“insert successful”。表单不会重新加载,所以看起来像是插入了重复应用的数据(但不是) 我想在触发唯一索引错误时停止提交触发器或使form_succ
oncelik
的文本项,表中还有一列。我已经为列创建了唯一索引
,因此记录不能重复
当用户输入重复数据并尝试提交时,下面的代码在键提交
触发器中运行,并在提交表单行之后运行
ON_ERROR
触发并显示类似“您不能输入重复数据”的错误信息
之后,提交触发器继续运行,form\u success
变为true,因此表单也会显示“insert successful”。表单不会重新加载,所以看起来像是插入了重复应用的数据(但不是)
我想在触发唯一索引错误时停止提交触发器或使form_success
false。下面是提交代码,有什么建议吗
Pre_Commit_Form;
commit_form; --this line fires the ON_ERROR
Post_Commit_Form;
if form_success then --after error this block runs and form says insert success
ShowMessage(proc,True,'AKA-00303');
else
ShowError;
ShowMessage(proc,True,'AKA-00304');
end if;
注意:我知道我可以控制表单上的重复数据,但我更喜欢让数据库错误停止提交过程。问题是您正在通过
on-error
-触发器丢弃错误
放
RAISE FORM_TRIGGER_FAILURE; -- To make your error silent
在触发器结束时,确保故障状态保持在所需状态
要明确地处理您独特的关键问题,您可以在
ON-ERROR
触发器中检查ERROR\u code
,然后在索引上提升DUP\u VAL
。您应该将表单成功检查放在提交表单之后和提交之后_form@nightfox79它只是改变了运行顺序,仍然form_success为true,并且form在错误消息后显示insert successful。您是否有执行某些操作的on error触发器,如果您忽略on error触发器中的错误,则不会失败anymore@nightfox79是的,我有一个on_错误触发器,其中只有一条ShowMessage行,没有其他内容。它在commit_form行之后运行,并显示消息,然后key_commit继续运行。@81我没有尝试过,但我将messagebox放在了该块中。它不起作用,因为form_的成功是真实的