我有一個按鈕的WHEN-BUTTON-PRESSED
觸發下面的代碼形式禁止錯誤信息,並抓住FRM-40350
BEGIN
SYNCHRONIZE;
populate_maximo_records;
END;
將會有一個場景,不會有TI塊填充任何記錄。如果沒有記錄,目前它拋出以下錯誤消息
frm-40350 query caused no records to be retrieved
相反,我想抑制上述消息並顯示自定義的消息。 我該怎麼做?
我有一個按鈕的WHEN-BUTTON-PRESSED
觸發下面的代碼形式禁止錯誤信息,並抓住FRM-40350
BEGIN
SYNCHRONIZE;
populate_maximo_records;
END;
將會有一個場景,不會有TI塊填充任何記錄。如果沒有記錄,目前它拋出以下錯誤消息
frm-40350 query caused no records to be retrieved
相反,我想抑制上述消息並顯示自定義的消息。 我該怎麼做?
您可以使用system.message_level從系統抑制的消息: 你的消息級別:0,5,10,15,20,25,> 25
在一個觸發器,你可以指定只有超過指定嚴重性級別的消息纔會由表單發出 。您可以通過給MESSAGE_LEVEL分配一個值做到這一點
例如:
declare
old_message_level number;
begin
:old_message_level := :system.message_level;
:system.message_level := 20; -- suppresses most errors
commit; -- action you want to do without messages or errors
:system.message_level := old_message_level;
end;
如果你持有一個變量或表,那麼你通過檢查你的變量,如果顯示此代碼後,自己的消息出現的任何錯誤發生了錯誤。
您可以使用On-Message或On-Error觸發器來捕獲任何內部窗體消息或錯誤。 FRM-40350被分類爲類型信息(可以在Forms幫助中檢查),因此它必須在On-Message觸發器中處理。用於捕捉消息的代碼應該是這樣的:
IF message_code = 40350 THEN
Message('Your custom message');
ELSE
Message(message_type||'-'||TO_CHAR(message_code)||':'||message_text);
END IF;
請注意,「開」觸發器替換隱性形式的功能,因此,如果您在本例中離開了ELSE語句,那麼你將隱藏所有其他形式的消息!使用On-Error觸發器時,記住在顯示自己的消息後使用RAISe是非常重要的,否則表單將繼續,因爲錯誤從未發生過!
IF error_code = 50026 THEN
Message('My Own message');
RAISE FORM_TRIGGER_FAILURE;
ELSE
Message(error_type||'-'||TO_CHAR(error_code)||':'||error_text);
RAISE FORM_TRIGGER_FAILURE;
END IF;
謝謝,這很有幫助。 – user75ponic
如何檢查是否發生了錯誤'frm-40350'並顯示一條自定義消息?並在哪個觸發器?形成槓桿,塊級或物品級別?謝謝 – user75ponic