Oracle APEX: сообщение об ошибке в поле вызывает сообщение об ошибке

У меня есть следующий код:

DECLARE
    i NUMBER;
BEGIN
    SELECT COUNT(*) INTO i FROM apex_collections where collection_name = 'COLLECTION';

    if i = 0 then
        apex_error.add_error(
          p_message => 'Invalid Excel file!'
        , p_display_location => apex_error.c_inline_with_field
        , p_page_item_name => 'P3_BROWSE_EXCEL'
        );
    end if;
END;

Все, что он делает, это проверяет, существует ли коллекция. Если нет, это должно вызвать ошибку.

Я вызываю это из процесса, поэтому предупреждение или что-то подобное не являются альтернативой.

Вместо того, чтобы показывать правильное сообщение об ошибке рядом с элементом P3_BROWSE_EXCEL, он показывает эту ошибку вверху страницы:

1 error has occurred

Error: Not found

Я на 100% уверен, что P3_BROWSE_EXCEL существует на этой странице, так почему?


person Markus Appel    schedule 20.12.2017    source источник
comment
Я проверил ваш код - он работает. Если вы передадите в функцию add_error неправильное имя элемента, APEX покажет сообщение Unable to find item ID for item "P3_BROWSE_EXCEL" in application "XYZ".. Так что похоже ваша ошибка в другом месте.   -  person Dmitriy    schedule 21.12.2017
comment
Вы пытались запустить страницу в режиме отладки? Это может указать вам правильное направление.   -  person Littlefoot    schedule 23.12.2017


Ответы (1)


Почему бы вам не использовать простую проверку SQL? Тип проверки — Rows returned, запрос

SELECT 1 FROM apex_collections where collection_name = 'COLLECTION';

Display location - Inline with field, Associated Item - вы можете выбрать элемент из списка со 100% гарантией его существования.

person Dmitriy    schedule 20.12.2017
comment
Поскольку загрузка Excel, создающая коллекцию, представляет собой процесс, который происходит ПОСЛЕ проверки. - person Markus Appel; 21.12.2017