#javascript #oracle #process #oracle-apex #dml
Вопрос:
У меня есть форма, которая позволяет пользователям импортировать файл (большой двоичный объект), поместить комментарий и дату.
Мне пришлось создать функцию проверки, чтобы проверить, пусты ли поля, вот почему :
Проверка по умолчанию возвращает «неопределенный», когда файловый браузер пуст, а текст проверки не переводится, когда он является средством выбора даты, хотя я перевел сообщение в своих общих компонентах :
- Поэтому я решил создать Динамическое действие с выражением JavaScript для проверки полей и отображения ошибок.
apex.message.clearErrors(); var chkErr = 0; //declare fields var arr = [ 'P28_BLOB_DOCUMENT', 'P28_COMMENTAIRE_DOCUMENT', 'P28_DATE_DOCUMENT' ]; //declare Labels var arrLabel = [ "Importer un document", "Commentaire", "Date d'exportation" ]; //Check NULL for (var i in arr) { if ($v(arr[i]).length == 0) { apex.message.showErrors([ { type: apex.message.TYPE.ERROR, location: ["inline", "page"], pageItem: arr[i], message: arrLabel[i] " doit contenir une valeur", unsafe: false } ]); chkErr = 1; } } if ( chkErr == 0 ) { /* Custom dynamic action call when no error occurred */ apex.message.confirm("Do you want to import this document ?", function(okPressed) { if (okPressed) { apex.submit({request:'insertDocumentProcess'}); //apex.submit('insertDocumentProcess'); } }); }
Все работает, если я добавлю этот DA к своей кнопке, у меня будут свои подтверждения :
Now here comes the real problem, if I use the Dynamic Action on the CREATE
button, the auto process «Form — Automatic Row Processing (DML)», is not executing anymore. Even tough I tried to call it using the apex.submit('insertDocumentProcess');
or apex.submit({request:'insertDocumentProcess'});
, the INSERT
action is not executing on the database.
Here are all the details :
- The create button, with the code explained above
- The process that is generated automatically when creating the form, that I try to call
Я что-то пропустил ? Все INSERT
работало нормально, когда я не добавлял функцию проверки, так связана ли проблема с тем, как я вызываю процесс ? Или это потому, что я пытаюсь ВСТАВИТЬ ФАЙЛ БОЛЬШОГО двоичного объекта и что-то упускаю ?
Я пробовал разные варианты, когда другой окружной прокурор вызывал процесс, но это не увенчалось успехом.
У меня все еще есть сообщение об успехе процесса в конце, в котором говорится «Строка создана», но оно не отображается в базе данных. Может ли он все еще подтвердить, что я успешно вызываю процесс ?
Заранее спасибо,
Ответ №1:
Добавьте a Client-side Condition
в свое динамическое действие checkErrors
. Выберите JavaScript expression
, чтобы проверить, проходят ли текстовые поля проверку или нет
Пример
( apex.item('P28_BLOB_DOCUMENT').isEmpty() || apex.item('P28_COMMENTAIRE_DOCUMENT').isEmpty() || apex.item('P28_DATE_DOCUMENT').isEmpty() )
True action
должен быть код JavaScript, который проверяет пустые поля (код, который вы опубликовали выше).
apex.message.clearErrors(); var chkErr = 0; //declare fields var arr = [ 'P28_BLOB_DOCUMENT', 'P28_COMMENTAIRE_DOCUMENT', 'P28_DATE_DOCUMENT' ]; //this is the code you pasted above
False action
должно быть действие: Submit Page
и заполните опцию Request / Button Name
: CREATE
сообщить APEX , что вы хотите Insert
или SAVE
если хотите Update
, это воспроизведет то же поведение, что и при обычной отправке.
Дайте мне знать, если у вас возникнут вопросы.
Комментарии:
1. Работает отлично ! Большое спасибо !