Как отфильтровать символы в поле текстового элемента в Oracle Forms? - PullRequest
0 голосов
/ 20 февраля 2009

мы используем формы оракула ... мы должны защитить (или) заблокировать поле текстового элемента от специальных символов. как (! @ # $% ^ & *) пожалуйста, пришлите некоторые рекомендации .... заранее спасибо ...

С уважением, Виджей

Ответы [ 3 ]

2 голосов
/ 20 февраля 2009

Вы можете использовать свойство маски формата, например, 999,99

2 голосов
/ 20 февраля 2009

Какая версия формы?

Метод грубой силы:

v_prohibited_chars VARCHAR2(100) := '!@#$%^&*';
v_result           VARCHAR2(4000);
...
-- strip prohibited characters
v_result := TRANSLATE(:form_field,'A'||v_prohibited_chars,'A');

-- if anything was stripped, lengths will differ
IF LENGTH(:form_field) <> LENGTH(v_result) THEN
  error...
END IF

Если я правильно понимаю ваш комментарий, хотите ли вы отфильтровать специальные символы из поля формы?

Приведенный выше код делает это и помещает результат в v_result. Итак, если у вас есть входное значение 'ABC # DEF #', и ваша маска фильтра - '! @ # $% ^ & *', То после выполнения TRANSLATE ваш результат будет 'ABCDEF'. Затем вы можете переназначить это значение в поле формы. Если вы просто хотите беззвучно удалить символ, вы можете пропустить проверку ДЛИНЫ и просто назначить вывод TRANSLATE обратно в поле формы:

:form_field := TRANSLATE(:form_field,'A'||v_prohibited_chars,'A');

То, что делает TRANSLATE, проверяет символы в первом параметре на соответствие символам во втором параметре. Когда он находит совпадение, он переводит этот символ в соответствующий символ в третьем параметре. Если в третьем параметре нет соответствующих символов для одного во втором, то символ переводится в NULL. Если символ не появляется во втором параметре, он остается неизменным. Таким образом, символ «А» переводится в «А», а все остальные символы в маске переводятся в NULL. Третий параметр не может быть NULL, следовательно, фиктивный перевод «A» в «A».

2 голосов
/ 20 февраля 2009

Когда в вашем текстовом поле есть какой-то введенный текст, вам нужно иметь функцию, которая проверяет весь ввод.

В этой функции у вас есть диапазон от недопустимых значений. Этот диапазон сделан в ASCII.

...