Oracle APEX выдает ошибку «NO DATA FOUND» при попытке получить значение отключенного поля табличной формы - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь обновить таблицу, используя запрос на обновление из процесса Oracle Opex.Для этого мне нужно было получить значение из табличной формы.Но это поле в настоящее время отключено (недоступно для редактирования, значение все еще существует), и здесь я получаю сообщение об ошибке «ORA-01403: данные не найдены».Если я включил это поле, то проблема исчезла (но поле будет редактируемым, я не хочу делать это поле редактируемым).

Эти данные (данные отключены) уже сохраняются в таблице (до этого полястановится инвалидом).Теперь я написал условие для обхода этой ошибки (например, ЕСЛИ APEX_APPLICATION.G_F03 (i) НЕ ПУСТО ПОТОМ).Но все же я получаю эту же ошибку (упомянутую выше).

Так, как показано в приведенном ниже коде 'coz of apex_application.g_f03 (i) отключен, он выдаёт мне ошибку' ORA-01403: данные не найдены ', тогда как apex_application.g_f04 (i) не дает мне никакихошибка.и если я включил поле apex_application.g_f03 (i), то ошибка исчезнет.

FOR i IN 1 ..apex_application.g_f01.count LOOP   

        if ((:P2_M1= 'f03') AND (apex_application.g_f03(i) IS NOT NULL)) then 
            ------------------------------------------------------------------------------------
            select  count(*) into v_count from SCHEMA1.TABLE1 
            where   ATTRIBUTE_CODE  =   apex_application.g_f02(i)   
            and     header_id       =   :P2_X_HEADER_ID
            and     rating_001 is not null ;
            ------------------------------------------------------------------------------------
            update  SCHEMA1.TABLE1 
            set     LAST_UPDATE_DATE =  sysdate,
                    LAST_UPDATED_BY  =  :F2221_USER_ID,
                    RATING_001       =  apex_application.g_f03(i),
                    STATUS           =  'NEW' 
            where   ATTRIBUTE_CODE  =   apex_application.g_f02(i)
            and     header_id       =   :P2_X_HEADER_ID;
            --------------------------------------------------------------
        END IF;  

        if ((:P2_M2 = 'f04') AND (apex_application.g_f04(i) IS NOT NULL)) then

            ------------------------------------------------------------------------------------
            select count(*) into v_count from SCHEMA1.TABLE1 
            where  ATTRIBUTE_CODE   =   apex_application.g_f02(i)   
            and    header_id        =   :P2_X_HEADER_ID
            and    rating_002 is not null ;    
            ------------------------------------------------------------------------------------
            update  SCHEMA1.TABLE1 
            set     LAST_UPDATE_DATE=   sysdate,
                    LAST_UPDATED_BY =   :F2221_USER_ID,
                    RATING_002      =   apex_application.g_f04(i),
                    STATUS          =   'NEW' 
            where   ATTRIBUTE_CODE  =   apex_application.g_f02(i)   
            and     header_id       =   :P2_X_HEADER_ID;
            ------------------------------------------------------------------------------------

        END IF; 

    end loop; 

Я ожидал получить либо значение этого поля apex_application.g_f03 (i) (даже если оно отключено)или обойти его.

1 Ответ

1 голос
/ 20 мая 2019

Это стандартное поведение любой формы HTML, а не только APEX. Если для какого-либо ввода установлено значение отключено , то при отправке формы его значение не публикуется. Если вместо этого вы можете установить readonly , тогда пользователь по-прежнему не сможет редактировать его, но его значение будет опубликовано при отправке.

...