0

オラクルフォームを使用しています...テキスト項目フィールドを特殊文字から保護(またはブロック)する必要があります。いいね ( !@#$%^&*) いくつかのガイダンスを送ってください.... よろしくお願いします...

よろしく、ビジェイ

4

3 に答える 3

2

テキストボックスが入力されたテキストの場合、すべての入力を検証する関数が必要です。

その関数では、無効な値の範囲があります。その範囲は ASCII で作成されます。

于 2009-02-19T21:26:15.290 に答える
2

999.99 のような書式マスク プロパティを使用できます。

于 2009-02-19T21:41:39.903 に答える
2

どのバージョンのフォームですか?

力ずくの方法:

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」になります。その後、この値をフォーム フィールドに再割り当てできます。静かに文字を削除したい場合は、LENGTH チェックをスキップして、単純に TRANSLATE の出力をフォーム フィールドに割り当てることができます。

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

TRANSLATE が行うことは、最初のパラメーターの文字と 2 番目のパラメーターの文字を照合することです。一致する文字が見つかると、その文字が 3 番目のパラメーターの対応する文字に変換されます。3 番目のパラメーターに 2 番目のパラメーターに対応する文字が存在しない場合、その文字は NULL に変換されます。2 番目のパラメーターに文字が表示されない場合、その文字は変更されません。したがって、文字「A」は「A」に変換され、マスク内の他のすべての文字は NULL に変換されます。3 番目のパラメーターを NULL にすることはできないため、'A' から 'A' へのダミー変換です。

于 2009-02-19T22:51:03.217 に答える