Нажмите кнопку, Добавить новую строку в форму - PullRequest
0 голосов
/ 12 марта 2019

Я нахожусь в процессе изучения Oracle APEX версии 18. Для моего первого проекта я создал форму, сгенерированную из представления, основанного на двух таблицах:

enter image description here

Когда форма отправлена, вызывается следующий триггер, чтобы данные могли быть вставлены в ее правильную таблицу:

CREATE OR REPLACE EDITIONABLE TRIGGER  "TRG_VIEW_PERSON_COMPUTER_INSRT" 
    INSTEAD OF INSERT ON view_person_computer
    DECLARE
        duplicate_info EXCEPTION;
        PRAGMA EXCEPTION_INIT (duplicate_info, -00001);
    BEGIN
        INSERT INTO PERSON (
            ID,
            FIRST_NAME,
            LAST_NAME,
            EMAIL,
            PHONE
        ) VALUES (
            SEQPERSON.NEXTVAL,
            :NEW.FIRST_NAME,
            :NEW.LAST_NAME,
            :NEW.EMAIL,
            :NEW.PHONE
        );
        INSERT INTO COMPUTER (
            ID,
            PERSON_ID,
            MAKE,
            MODEL,
            CPU,
            RAM,
            HARD_DRIVE
        ) VALUES (
            SEQCOMPUTER.NEXTVAL,
            SEQPERSON.CURRVAL,
            :NEW.MAKE,
            :NEW.MODEL,
            :NEW.CPU,
            :NEW.RAM,
            :NEW.HARD_DRIVE
        );
        EXCEPTION
            WHEN duplicate_info THEN
                RAISE_APPLICATION_ERROR (
                    num=> -20107,
                    msg=> 'Duplicate customer or project id'
                );
    END trg_view_person_computer_insrt;

В настоящее время кнопка «Добавить другой компьютер»не работаетТаким образом, у человека может быть только один связанный с ним компьютер.На следующем этапе проекта я хочу, чтобы кнопка работала, но мои знания об APEX все еще очень ограничены.

Цель: при нажатии кнопки «Добавить другой компьютер» она должна дублировать компьютерсвязанные текстовые поля, чтобы пользователь мог ввести другой компьютер.Каков наилучший способ добавить эту функциональность?

Спасибо!

1 Ответ

2 голосов
/ 12 марта 2019

Нет проблем в том, что вы делаете (если вы действительно хотите это сделать), но - зачем изобретать велосипед?

Находясь на Apex 18.x, я бы предложил вам использовать его возможности и создать страницу master-detail . Вы найдете его в мастере создания страницы.

  • установить таблицу PERSON ведущим
  • установить таблицу COMPUTER для детализации
  • пусть волшебник сделает все остальное

Сделав это, вы сможете запустить его за считанные секунды. Оба блока (региона) будут обновляемыми интерактивными сетками, которые позволят вам вводить новые строки (используя кнопку Добавить строку ), обновлять или удалять существующие, Oracle обратит внимание на внешние ключи, ... в ближайшее время, ты не поверишь своим глазам.

Как я уже сказал: вы можете сделать это по-своему для образовательных целей, но это трудный путь .

...