powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Динамическая проверка существования значения
7 сообщений из 7, страница 1 из 1
Динамическая проверка существования значения
    #37531590
SimbaRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
APEX4
Имеется текстовое поле P1_TF.
Имеется рабочий пакет с функцией проверки уникальности записи.
Цель: динамически вывести результат проверки уникальности введённой в поле записи .
Например, если использовать Validations при Submit всё нормально.
Однако, задача - средствами APEX выполнить проверку динамически.

Для этого создаю Dynamic Actions с Event Change, Conditions none.
В нём True Action с PL/SQL Execution с рабочим в Validations кодом:
Код: plaintext
1.
2.
3.
4.
5.
6.
begin
  If PKG.Check_Uni(:P1_TF) >  0  Then
    :P1_L := 'Запись существует.';
  Else
    :P1_L := 'Запись не существует.';
  End If;
end;
... что не работает.

Вопрос: что не так делаю? Как правильнее было бы выполнить задачу?
Благодарю за помощь.
...
Рейтинг: 0 / 0
Динамическая проверка существования значения
    #37533651
haXbat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SimbaRu,

Create Application process AP_CHECK
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE
   f_mes   VARCHAR2 ( 20 );
BEGIN
   IF PKG.Check_Uni (:P1_TF) >  0 
   THEN
      f_mes := 'Запись существует.';
   ELSE
      f_mes := 'Запись не существует.';
   END IF;

   apex_util.set_session_state ('P1_L',f_mes);
   apex_util.json_from_items ('P1_L');
END;

В свой dynamic action вместо PL/SQL Execution добавьте Execute javascript code
Код: plaintext
1.
2.
3.
ajaxRequest =  new  htmldb_Get( null ,$v('pFlowId'),'APPLICATION_PROCESS=AP_CHECK',$v('pFlowStepId'));
ajaxRequest.add('P1_TF',$v('P1_TF'));
ajaxResponse = ajaxRequest.get();
json_SetItems(ajaxResponse);
...
Рейтинг: 0 / 0
Динамическая проверка существования значения
    #37533700
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SimbaRu,

в Action/Page Items to Submit указать :P1_TF
в Action/Page Items to Return (если есть) указать :P1_L , если нет, добавить action Refresh Item :P1_L
...
Рейтинг: 0 / 0
Динамическая проверка существования значения
    #37539723
SimbaRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По поводу таймера. Функция выполняется при keydown.
Задача: выполнить проверку функцией, написанной товарищами в этой теме, после определённого времени 1 раз.
Проблема: при вводе N символов в поле, ч/з заданное время получаем запросов на сервер в количестве N штук (нужен всего один).
Гугл нашёл замечательную функцию: clearTimeout();.
Но как её внешне использовать ума не приложу. Как-то использовать для этого condition в when? Может кто идею подкинет?

Код: plaintext
1.
2.
3.
4.
5.
6.
setTimeout(function(){
    ajaxRequest = new htmldb_Get(null,$v('pFlowId'),'APPLICATION_PROCESS=P22_P_CHECKLOGIN',$v('pFlowStepId'));
    ajaxRequest.add('P22_LOGIN',$v('P22_LOGIN'));
    ajaxResponse = ajaxRequest.get();
    json_SetItems(ajaxResponse);
},  3000 );
...
Рейтинг: 0 / 0
Динамическая проверка существования значения
    #37540402
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SimbaRu,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
var P_LOGIN = $v('P22_LOGIN');
setTimeout(function(){ 
  if ($v('P22_LOGIN') == P_LOGIN) {
    ajaxRequest = new htmldb_Get(null,$v('pFlowId'),'APPLICATION_PROCESS=P22_P_CHECKLOGIN',$v('pFlowStepId'));
    ajaxRequest.add('P22_LOGIN',$v('P22_LOGIN'));
    ajaxResponse = ajaxRequest.get();
    json_SetItems(ajaxResponse);
  }
},  3000 );
...
Рейтинг: 0 / 0
Динамическая проверка существования значения
    #37540444
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
упс, точнее

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
eval("
setTimeout(function(){ 
  if ($v('P22_LOGIN') == '" + $v('P22_LOGIN') + "') {
    ajaxRequest = new htmldb_Get(null,$v('pFlowId'),'APPLICATION_PROCESS=P22_P_CHECKLOGIN',$v('pFlowStepId'));
    ajaxRequest.add('P22_LOGIN',$v('P22_LOGIN'));
    ajaxResponse = ajaxRequest.get();
    json_SetItems(ajaxResponse);
  }
}, 3000);
");

А вообще это вопрос в раздел по яваскрипт лучше задать.
...
Рейтинг: 0 / 0
Динамическая проверка существования значения
    #37540534
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SimbaRuГугл нашёл замечательную функцию: clearTimeout();.
Но как её внешне использовать ума не приложу.
Как-нибудь типа

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
var TimerPrev;
var TimerCur;
...


if (TimerPrev)
  clearTimeout(TimerPrev);
TimerPrev = TimerCur;
TimerCur = setTimeout(function(){ ...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Динамическая проверка существования значения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]