Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle APEX Новый топик    Ответить
 UI типа "Wizard" с несколькими Tabular Form и транзакционность.  [new]
Курдль
Member

Откуда: Мск
Сообщений: 1062
Привет!
Есть визард, который позволяет создать карточку клиента.
1. Заполняем простые анкетные данные (Form)
2. Заполняем список документов (Tabular Form)
3. Заполняем список объектов (Tabular Form)

4.1. Жмём "SAVE" - всё вместе сохраняется.
4.2. Жмем "CANCEL" - всё вместе отменяется.

Обычно последняя страница визарда у меня совершает все операции DML, включая MRU от Tabular Form.
Но в данном случае требуется пробежаться по строкам 2-х таблиц.
Что подскажете?
Заранее благодарен.
28 авг 17, 15:26    [20754000]     Ответить | Цитировать Сообщить модератору
 Re: UI типа "Wizard" с несколькими Tabular Form и транзакционность.  [new]
Курдль
Member

Откуда: Мск
Сообщений: 1062
Может быть на странице 2 создать кастомную коллекцию, заполнить ее из Tabular Form, а на финальной странице записать данные из нее в БД?..
Кто-нить реализовывал такую фитчу?
28 авг 17, 17:02    [20754320]     Ответить | Цитировать Сообщить модератору
 Re: UI типа "Wizard" с несколькими Tabular Form и транзакционность.  [new]
heavyside
Member

Откуда:
Сообщений: 288
Курдль,

Не очень понимаю что значит "кастомная коллекция", но я бы заюзал apex_collections если возможно. Соответственно если таблицы две, то две коллекции с различными именами. Если apex_collections по типу/количеству столбцов не проходит (мне например иногда не хватает числовых полей), то можно создать таблички в базе с нужными полями и полем юзер (если юзер может одновременно только одну сессию иметь). и чистить их по юзеру. Оба варианта использовал для визардов, всё хорошо работало.
29 авг 17, 10:23    [20755429]     Ответить | Цитировать Сообщить модератору
 Re: UI типа "Wizard" с несколькими Tabular Form и транзакционность.  [new]
Курдль
Member

Откуда: Мск
Сообщений: 1062
heavyside,

Да, под кастомной я имел в виду именованную apex_collection в отличие от типовой коллекции apex_application, в которую по умолчанию попадают результаты Tabular Form.
29 авг 17, 10:28    [20755446]     Ответить | Цитировать Сообщить модератору
 Re: UI типа "Wizard" с несколькими Tabular Form и транзакционность.  [new]
Курдль
Member

Откуда: Мск
Сообщений: 1062
Поделюсь своим опытом.
Решение оказалось вполне удовлетворительным.
Причем удалось избежать проблемы исчезновения данных из Tabular Form после перехода туда/обратно по кнопкам визарда NEXT/PREVIOUS.
Для этого достаточно построить Tabular Form регион на запросе к той же коллекции, где сохраняются его записи.
SELECT n001, n002, n003, c001, c002, c003, c004 FROM APEX_COLLECTIONS WHERE COLLECTION_NAME = 'EMPLOYEE'


Для сохранения данных при уходе со страницы создаётся процесс After Submit:
BEGIN
   APEX_COLLECTION.CREATE_OR_TRUNCATE_COLLECTION (p_collection_name => 'EMPLOYEE');
      
   FOR i IN 1 .. APEX_APPLICATION.G_F02.COUNT
   LOOP
      APEX_COLLECTION.ADD_MEMBER (p_collection_name   => 'EMPLOYEE',
                                  p_n001              => APEX_APPLICATION.G_F02 (i),
                                  p_n002              => APEX_APPLICATION.G_F03 (i),
                                  p_n003              => APEX_APPLICATION.G_F04 (i),
                                  p_c001              => APEX_APPLICATION.G_F05 (i),
                                  p_c002              => APEX_APPLICATION.G_F06 (i),
                                  p_c003              => APEX_APPLICATION.G_F07 (i),
                                  p_c004              => APEX_APPLICATION.G_F08 (i));                               
   END LOOP;
END;
30 авг 17, 13:54    [20758706]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle APEX Ответить