Как я могу запретить пользователю создавать более одной записи одновременно в многорядном блоке? - PullRequest
1 голос
/ 10 января 2012

У меня есть форма с многострочным блоком на основе таблицы. Требование заключается в том, что пользователь может ввести только 1 строку в блок за раз и зафиксировать ее. Им не должно быть разрешено создавать второй ряд перед фиксацией первого.

Я пытался использовать триггер WHEN-CREATE-RECORD следующим образом:

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

Однако это не позволяет мне создавать новую запись даже после внесения изменений.

Ответы [ 2 ]

1 голос
/ 18 июля 2017
BEGIN
  -- WHEN-NEW-RECORD-INSTANCE
  IF :SYSTEM.CURSOR_RECORD > 1 THEN
    DELETE_RECORD;
  END IF;
END;
1 голос
/ 10 января 2012

Один из способов - циклически проходить по всем записям, а если вторая запись не пуста, предупредить пользователя.

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; 
...