私は4つの列(id、type_id、type_desc、state_id)のテーブルOBJECTSを持っています。Oracle Forms:事前削除トリガーでアラートが機能しない
state_idが 'DELETE'の場合は、行の削除を中止し、「この行を削除できません」という警告メッセージを表示します。 はここPRE_DELETEトリガーがあります:
begin
if :OBJECTS.state_id = 'DELETE' then
set_item_instance_property('OBJECTS.state_id', CURRENT_RECORD, VISUAL_ATTRIBUTE, 'ERROR');
if show_alert('ALERT_DEL') = alert_button1 then
null;
end if;
raise FORM_TRIGGER_FAILURE;
end if;
end;
残念ながら、警告メッセージが表示されません。
編集: 私は前にこれを言及するのを忘れてしまった: Oracle Formsは、エラーFRM-40741を返す:ブロックオブジェクト上で、レコード0を見つけることができません。
編集: 私もPRE-UPDATEトリガをやろうとしている:
declare
stateID varchar2(10);
pressed_button number(2,0);
info number(2,0);
begin
stateID := get_item_property(:OBJECTS.state_id, DATABASE_VALUE);
set_alert_property('ALERT_INFO',alert_message_text,'STATE_ID: ' || stateID);
info := show_alert('ALERT_INFO');
if stateID = 'DELETE' then
set_item_instance_property('OBJECTS.state_id', CURRENT_RECORD, VISUAL_ATTRIBUTE, 'ERROR');
pressed_button := show_alert('ALERT_EDIT');
raise FORM_TRIGGER_FAILURE;
end if;
end;
私はエラーFRM-40105を取得します:DELETEアイテムへの参照を解決できません。 したがって、ALERT_INFOアラートを作成して、データベースに格納されているstate_idの値を表示しました。私は何も示していない。私は間違って何をしていますか?