2012-01-09 10 views
1

私はテーブルに基づいて複数行のブロックを持つフォームを持っています。要件は、ユーザーが一度に1行だけブロックに入力してコミットできることです。最初の行を作成する前に、2番目の行を作成することは許されません。複数行ブロックで一度に複数のレコードを作成できないようにするにはどうすればよいですか?

私はこのようなWHEN-CREATE-RECORDトリガー使用してみました:

if :system.block_status = 'CHANGED' then 
    alert('Can only create one record at a time'); 
end if; 

をしかし、これは私がしても、変更をコミットした後、新しいレコードを作成しないように。

答えて

1

1つの方法はすべてのレコードをループし、2番目のレコードがnullでない場合はユーザーに警告します。

DECLARE 
    n_index NUMBER := 0; 
BEGIN 
    Go_block('block_name'); 

    first_record; 

    WHILE :SYSTEM.last_record != 'TRUE' LOOP 
     next_record; 

     IF :block_name.item_name IS NOT NULL THEN --replace item_name with one which the user will enter all the time 
      n_index := n_index + 1; 
     END IF; 

     IF n_index > 0 THEN 
      Alert('Only one record can be created at a time!'); 
     END IF; 
    END LOOP; 
END; 
+0

感謝。私はどこでこれをやるだろうか?例えば最後のレコードの下のマウスをクリックするだけで新しい行を作成することができます(またはそれを防ぐことはできますか?) – Shaz

+0

'when-create-record'または' when-validate-record'で実行できますあなたのために@Shaz – Sathya

1
BEGIN 
    -- WHEN-NEW-RECORD-INSTANCE 
    IF :SYSTEM.CURSOR_RECORD > 1 THEN 
    DELETE_RECORD; 
    END IF; 
END; 
関連する問題