Как найти первичный и внешний ключ формы в APEX?

#sql #oracle #oracle-apex

Вопрос:

Я работаю над системой еженедельных назначений в APEX, и мне нужно использовать форму, чтобы указать рабочее время сотрудников в календаре. Я использую динамическое действие для вставки 365 записей в таблицу вместо кнопки «Отправить». Проблема в том, что, когда я хочу связать свой запрос с идентификатором формы, он не работает, потому что в нем указано, что поле равно нулю.

 DECLARE
Start_work_date TIMESTAMP(6);
End_work_date TIMESTAMP(6);
Start_break_date TIMESTAMP(6);
End_break_date TIMESTAMP(6);
Day_name Varchar(20);

BEGIN
Start_work_date := :P2_START_WORK_TIME;
End_work_date := :P2_END_WORK_TIME;
Start_break_date := :P2_START_BREAK_TIME;
End_break_date := :P2_END_BREAK_TIME;

FOR I IN 1..365
LOOP
    INSERT INTO TS_SCHEDULE (USER_ID, START_WORK_TIME, END_WORK_TIME,START_BREAK_TIME,END_BREAK_TIME)
    VALUES (:P2_USER_ID, Start_work_date, End_work_date, Start_break_date, End_break_date);

Start_work_date := Start_work_date   interval '1' day;
End_work_date := End_work_date   interval '1' day;
Start_break_date := Start_break_date   interval '1' day;
End_break_date := End_break_date   interval '1' day;

select to_char(Start_work_date, 'DAY') into Day_name from dual;

IF Day_name = 'SATURDAY' THEN
Start_work_date := Start_work_date   interval '2' day;
End_work_date := End_work_date   interval '2' day;
Start_break_date := Start_break_date   interval '2' day;
End_break_date := End_break_date   interval '2' day;
END IF;
END LOOP;
END;
 

После того, как я получу все входные данные, я попытаюсь использовать :P2_USER_ID для вставки, но он говорит, что это нулевое значение

Как я могу получить значение, которое я ищу, чтобы иметь свои пользовательские вставки?

Комментарии:

1. Работает ли это, если вы используете -1 / ANONYMOUS для идентификатора пользователя ?

Ответ №1:

Вот где это терпит неудачу, верно?

 INSERT INTO TS_SCHEDULE (USER_ID, START_WORK_TIME, ...)
VALUES (:P2_USER_ID, Start_work_date, ...);
        -----------
 

Поскольку вы используете динамическое действие, вы P2_USER_ID вставили элементы динамического действия в свойство отправки? Если нет, я бы посоветовал вам это сделать.

Ответ №2:

Если вы используете динамическое действие, то вы должны иметь возможность указать элемент в параметре «Элементы страницы для отправки».

В качестве альтернативы вы можете попробовать изменить свойство элемента «Поддерживать состояние сеанса» на » За сеанс (диск)».

свойства источника элемента

Хотя я пробую это на ПК в своей форме, и в состоянии сеанса по-прежнему нет значения, в отличие от элементов, не относящихся к пк, которые у меня есть в моей форме с этой настройкой.