我有一些验证代码,当用户尝试保存时,它将运行一些复杂的业务规则,并确定当前输入的数据是否与规则足够匹配以允许保存。如果不是,则会在屏幕底部显示一条错误消息,告诉他们违反了哪些规则message('All foos of type bar must qux.')
。
当他们退出表单时,它也会违反验证,如果成功,会询问他们是否要保存(使用内置的问题)。如果不成功,我会发出警报,通知他们所有数据都将丢失,并询问他们是否仍希望退出。问题是,当他们单击“仍然退出”时,会弹出验证消息。一旦他们单击确定,表单就会按预期关闭。
我正在尝试抑制/清除消息,以免出现此弹出窗口。我已经尝试更改消息级别,但它仍然会弹出。我试过坚持 a message('', NO_ACKNOWLEDGE)
,但这只能让我控制我希望消息弹出的 if/else 链中的哪个位置。
我可以做些clear_messages
什么来取消表单上等待显示的所有消息?
按照目前的情况,如果我这样做
message('something')
我在状态栏中收到一条消息。
如果我做
message('something')
message('something else')
第二个在消息栏中,而第一个在屏幕上弹出。
我在问是否有办法阻止第一条消息弹出。这显然是以 oracle 形式完成的,我已经解释了一些清除它的尝试。是的,我不明白如何清除状态栏以防止消息弹出,这就是我问这个问题的全部原因。
也许我需要说明原因
message('something', no_acknowledge);
message('something else');
不能解决我的问题?
如果是这种情况,原因是因为第一条消息是由程序单元打印出来的,在除此之外的所有情况下,如果有另一条消息进来,我希望它弹出。
换句话说,我有
function do_something return number is
...
begin
...
message('something');
...
end;
do_something 处理针对某些业务规则运行的位置。
在其他地方,在我的键退出触发器中
...
if do_something = 0 then
if Show_Alert('Alert_that_explains_data_is_not_being_saved_due_to_validation_failure') = alert_button 1 then
exit_form(no_validate);
end if;
else
exit_form;
end if;
...
在除此之外的所有其他情况下,当我调用 do_something 时,我希望在状态栏上放置另一条消息时弹出该消息,但在这种情况下,我不希望它出现。因此,我问是否有办法清除消息或抑制它,以便在这种情况下它不会弹出。