Гость
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Динамическая проверка существования значения / 7 сообщений из 7, страница 1 из 1
17.11.2011, 14:47
    #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
18.11.2011, 15:16
    #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
18.11.2011, 15:32
    #37533700
SvDev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическая проверка существования значения
SimbaRu,

в Action/Page Items to Submit указать :P1_TF
в Action/Page Items to Return (если есть) указать :P1_L , если нет, добавить action Refresh Item :P1_L
...
Рейтинг: 0 / 0
23.11.2011, 09:05
    #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
23.11.2011, 14:29
    #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
23.11.2011, 14:43
    #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
23.11.2011, 15:11
    #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
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Динамическая проверка существования значения / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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