2012-01-09 63 views
1

我有一个基于表格的多行块。要求是用户一次只能在块中输入1行并提交。在提交第一行之前,不应允许它们创建第二行。如何防止用户在多行块中一次创建多条记录?

我试图用一个WHEN-CREATE-RECORD触发器是这样的:

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

然而,这使我即使提交修改后创造了新的记录。

回答

1

一种方法是循环遍历所有记录,如果第二条记录不为空,则提醒用户。

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 2012-01-10 10:31:19

+0

你可以在'when-create-record'或'when-validate-record'上做 - 看看哪个工作正常为你@Shaz – Sathya 2012-01-10 11:08:27

1
BEGIN 
    -- WHEN-NEW-RECORD-INSTANCE 
    IF :SYSTEM.CURSOR_RECORD > 1 THEN 
    DELETE_RECORD; 
    END IF; 
END;