ヘッダーをスキップ
Oracle® Application Expressアプリケーション・ビルダー・ユーザーズ・ガイド
リリース4.2 for Oracle Database 12c
B71338-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

8.4 検証の理解

検証は編集確認です。単一アイテムに固有の検証は、ページ・アイテムの検証です。ページ全体に適用する検証は、ページの検証です。単一列に固有の表形式フォームの検証は、列レベルの検証です。単一列に適用しない表形式フォームの検証は、表形式フォームの行の検証です。

検証を宣言的に定義するには、検証方法を選択します。検証メッセージ・フィールドに、実際の検証の編集確認を入力します。検証が失敗した場合は、後続のページ・プロセスまたは計算が行われないことに注意してください。また、入力した検証は、選択した検証タイプと一貫性がある必要があることも注意してください。

内容は次のとおりです。

8.4.1 アイテムおよびページ検証の作成

検証の作成ウィザードを実行して、検証を作成します。このウィザードは、検証対象に応じてわずかに変化します。検証は、指定のフィールドに固有(単一ページ・アイテムまたは表形式フォーム列の検証)か、フィールドに固有のものではない(ページまたは表形式フォーム行の検証)かのいずれかです。

内容は次のとおりです。

8.4.1.1 ページ・アイテムの検証の作成

ページ・アイテムの検証を作成するには、次のステップを実行します。


注意:

検証に対して入力するテキストは、3,950文字以下にする必要があります。

  1. 該当するページ定義にナビゲートします。「ページ定義へのアクセス」を参照してください。

  2. 検証の作成ウィザードにアクセスします。

    • ツリー・ビュー: 「ページ・プロセス」で、「検証中」を右クリックして、「検証の作成」を選択します。

    • コンポーネント・ビュー: 「ページ・プロセス」で、「検証」を見つけます。「作成」アイコンをクリックします。

    検証の作成ウィザードが表示されます。

  3. 「検証レベル」で、「ページ・アイテム」を選択し、「次へ」をクリックします。

  4. 「アイテム/列」で、検証するアイテムを選択し、「次へ」をクリックします。

  5. 「順序と名前」で、次のステップを実行します。

    1. 順序: このアイテムの順序番号を入力します。

    2. 「検証名」: この検証の名前を入力します。

    3. エラー表示位置: 検証エラー・メッセージの表示位置を選択します。検証エラー・メッセージは、エラー・ページに表示したり、送信済ページにインラインで表示できます。インライン検証は、通知領域(ページ・テンプレートの一部として定義される)に表示したり、フィールド・ラベル内に表示することができます。

    4. 「次へ」をクリックします。

  6. 「検証タイプ」で、表8-10の説明に従って方法を選択し、「次へ」をクリックします。

    表8-10 ページ・アイテムの検証方法

    検証方法 説明

    NOT NULL

    セッション・ステートのアイテム値がNULLかどうかを確認します。

    たとえば、アイテムの検証を作成してから検証方法「アイテムがNOT NULL」を選択して、ユーザーがフィールドに値を入力したことを検証できます。

    文字列の比較

    アイテム値を特定の文字列と比較します。プロンプトが表示されたら、検証タイプを選択します。

    アイテムの値とリテラル文字列を比較する文字列の比較検証がいくつかあります。たとえば、検証タイプ「式1のアイテムが式2に含まれる」を選択して、フィールドのユーザー・エントリを、指定した値リストに対して検証します。

    式1に、検証するアイテムの名前をコロンなしで入力します。次に例を示します。

    P1_VALUE
    

    式2に、検証先の値の文字列を入力します。次に例を示します。

    ABC/DEF/GHI
    

    正規表現

    正規表現は、テキスト・パターンを記述する方法を提供します。「正規表現」検証を使用して、データの検証を実行します。プロンプトが表示されたら、正規表現を入力します。

    たとえば、次の正規表現検証を使用して、入力データの文字列が必ずカンマ区切りの6桁の数値のグループで構成され、後ろにカンマが続いていることを検証できます。

    î([[:digit:]]{6},)+$
    

    この正規表現検証では、次のエントリは有効とみなされます。

    123456,654321,

    123456,

    123456,123456,654321,

    しかし、次のエントリは有効ではありません。

    123456,12345

    12345

    SQL

    データベース内の値と比較します。検証タイプを選択します。

    • EXISTS

    • NOT EXISTS

    • SQL式

    たとえば、SQL検証を使用して、フィールドに入力した姓がデータベースに存在するかどうかを検証できます。次のEXISTS SQL検証では、フィールドはP1_LAST_NAMEという名前で、表はcustomersという名前です。

    SELECT 1 FROM customers 
    WHERE last_name = :P1_LAST_NAME
    

    詳細は、このページの下部にある構文の例を参照してください。

    PL/SQL

    複雑なロジックが必要な場合に便利です。検証タイプを選択します。

    • PL/SQL式

    • PL/SQLエラー

    • ブールを戻すファンクション

    • エラー・テキストを戻すファンクション

    たとえば、アドレスが米国以外のユーザーには県の入力を求めるアドレス・フォームの検証を作成する必要があるとします。次のPL/SQLを使用して、ブールを戻すファンクションとして検証を作成できます。

    BEGIN
      IF :P1_COUNTRY = 'US' AND :P1_PROVINCE IS NULL THEN
         RETURN FALSE;
      ELSE
        RETURN TRUE;
      END IF;
    END;
    

    PL/SQL式として実装する同じ検証を作成することもできます。

    NOT (:P1_COUNTRY='US' AND  :P1_PROVINCE IS NULL);
    

    詳細は、このページの下部にある構文の例を参照してください。


  7. 「検証」で、次のステップを実行します。

    1. エラー・メッセージ: 検証方法に応じて、検証が失敗した場合に表示する検証またはメッセージ・テキストを入力します。

      関連付けられたページ・アイテムのプレースホルダとして、#LABEL#を使用できます。

    2. 常に実行: ページが送信されるときに検証を実行するかどうかを決定します。この属性は、ページを送信するボタンまたは特定のページについての「検証の実行」属性とともに使用します。オプションは次のとおりです。

      • 「はい」: 検証は、ページ上のボタンまたはアイテムの検証設定とは無関係に常に実行されます。定義済条件が依然として適用されることに注意してください。

      • 「いいえ」: 検証は、ページを送信するために使用されるボタンまたはアイテムの「検証の実行」属性が「はい」に設定されているときにのみ実行されます。

      詳細は、「検証を実行するタイミングの決定」を参照してください。

    3. 「次へ」をクリックします。

  8. この検証に適用される条件を定義し、「作成」をクリックします。

8.4.1.2 ページ全体の検証の作成

ページ全体の検証を作成するには、次のステップを実行します。


注意:

検証に対して入力するテキストは、3,950文字以下にする必要があります。

  1. 該当するページ定義にナビゲートします。「ページ定義へのアクセス」を参照してください。

  2. 検証の作成ウィザードにアクセスするには、次のステップを実行します。

    • ツリー・ビュー: 「ページ・プロセス」で、「検証中」を右クリックして、「検証の作成」を選択します。

    • コンポーネント・ビュー: 「ページ・プロセス」で、「検証」を見つけます。「作成」アイコンをクリックします。

    検証の作成ウィザードが表示されます。

  3. 「検証レベル」で、「ページ」を選択し、「次へ」をクリックします。

  4. 「順序と名前」で、次のステップを実行します。

    1. 順序: このアイテムの順序番号を入力します。

    2. 「検証名」: この検証の名前を入力します。

    3. エラー表示位置: 検証エラー・メッセージの表示位置を選択します。検証エラー・メッセージは、エラー・ページに表示したり、送信済ページにインラインで表示できます。インライン検証は、通知領域(ページ・テンプレートの一部として定義される)に表示したり、フィールド・ラベル内に表示することができます。

    4. 「次へ」をクリックします。

  5. 「検証タイプ」で、表8-11の説明に従って方法を選択し、「次へ」をクリックします。

    表8-11 ページの検証方法

    検証方法 説明

    SQL

    データベース内の値と比較します。検証タイプを選択します。

    • EXISTS

    • NOT EXISTS

    • SQL式

    詳細は、このページの下部にある構文の例を参照してください。

    PL/SQL

    複雑なロジックが必要な場合に便利です。検証タイプを選択します。

    • PL/SQL式

    • PL/SQLエラー

    • ブールを戻すファンクション

    • エラー・テキストを戻すファンクション

    詳細は、このページの下部にある構文の例を参照してください。


  6. 「検証」で、次のステップを実行します。

    1. 検証コード: 選択した検証タイプに対応するコードを入力します。

    2. エラー・メッセージ: 検証方法に応じて、検証が失敗した場合に表示する検証またはメッセージ・テキストを入力します。

      関連付けられたページ・アイテムのプレースホルダとして、#LABEL#を使用できます。

    3. 常に実行: ページが送信されるときに検証を実行するかどうかを決定します。この属性は、ページを送信するボタンまたは特定のページについての「検証の実行」属性とともに使用します。オプションは次のとおりです。

      • 「はい」: 検証は、ページ上のボタンまたはアイテムの検証設定とは無関係に常に実行されます。定義済条件が依然として適用されることに注意してください。

      • 「いいえ」: 検証は、ページを送信するために使用されるボタンまたはアイテムの「検証の実行」属性が「はい」に設定されているときにのみ実行されます。

      詳細は、「検証を実行するタイミングの決定」を参照してください。

    4. 「次へ」をクリックします。

  7. この検証に適用される条件を定義し、「作成」をクリックします。

8.4.1.3 表形式フォーム列の検証の作成

表形式フォーム列の検証を作成するには、次のステップを実行します。


注意:

検証に対して入力するテキストは、3,950文字以下にする必要があります。

  1. 該当するページ定義にナビゲートします。「ページ定義へのアクセス」を参照してください。

  2. 検証の作成ウィザードにアクセスするには、次のステップを実行します。

    • ツリー・ビュー: 「ページ・プロセス」で、「検証中」を右クリックして、「検証の作成」を選択します。

    • コンポーネント・ビュー: 「ページ・プロセス」で、「検証」を見つけます。「作成」アイコンをクリックします。

    検証の作成ウィザードが表示されます。

  3. 「検証レベル」で、次のステップを実行します。

    1. 表形式フォーム: この検証に関連付ける表形式フォーム・リージョンを選択します。

    2. 検証レベルの指定: 「列」を選択します。

    3. 検証する列を選択します。

  4. 「アイテム/列」で、次のステップを実行します。

    1. 検証する列を選択します。

    2. 「次へ」をクリックします。

  5. 「順序と名前」で、次のステップを実行します。

    1. 順序: このアイテムの順序番号を入力します。

    2. 「検証名」: この検証の名前を入力します。

    3. エラー表示位置: 検証エラー・メッセージの表示位置を選択します。検証エラー・メッセージは、エラー・ページに表示したり、送信済ページにインラインで表示できます。インライン検証は、通知領域(ページ・テンプレートの一部として定義される)に表示したり、フィールド・ラベル内に表示することができます。

    4. 「次へ」をクリックします。

  6. 「検証タイプ」で、表8-12の説明に従って方法を選択します。画面の指示に従い、「次へ」をクリックします。

    表8-12 表形式フォーム列の検証方法

    検証方法 説明

    NOT NULL

    セッション・ステートのアイテム値がnullかどうかを確認します。

    文字列の比較

    アイテム値を特定の文字列と比較します。プロンプトが表示されたら、検証タイプを選択します。

    正規表現

    正規表現は、テキスト・パターンを記述する方法を提供します。「正規表現」検証を使用して、データの検証を実行します。プロンプトが表示されたら、正規表現を入力します。

    SQL

    データベース内の値と比較します。検証タイプを選択します。

    • EXISTS

    • NOT EXISTS

    • SQL式

    詳細は、このページの下部にある構文の例を参照してください。

    PL/SQL

    複雑なロジックが必要な場合に便利です。検証タイプを選択します。

    • PL/SQL式

    • PL/SQLエラー

    • ブールを戻すファンクション

    • エラー・テキストを戻すファンクション

    詳細は、このページの下部にある構文の例を参照してください。


  7. 「検証」で、次のステップを実行します。

    1. エラー・メッセージ: 検証方法に応じて、検証が失敗した場合に表示する検証またはメッセージ・テキストを入力します。

      関連付けられた表形式フォーム列の列ヘッダーのプレースホルダとして、#COLUMN_HEADER#を使用できます。

    2. 常に実行: ページが送信されるときに検証を実行するかどうかを決定します。この属性は、ページを送信するボタンまたは特定のページについての「検証の実行」属性とともに使用します。オプションは次のとおりです。

      • 「はい」: 検証は、ページ上のボタンまたはアイテムの検証設定とは無関係に常に実行されます。定義済条件が依然として適用されることに注意してください。

      • 「いいえ」: 検証は、ページを送信するために使用されるボタンまたはアイテムの「検証の実行」属性が「はい」に設定されているときにのみ実行されます。

      詳細は、「検証を実行するタイミングの決定」を参照してください。

    3. 「次へ」をクリックします。

  8. この検証に適用される条件を定義し、「作成」をクリックします。

8.4.1.4 表形式フォーム行の検証の作成

表形式フォーム行の検証を作成するには、次のステップを実行します。


注意:

検証に対して入力するテキストは、3,950文字以下にする必要があります。

  1. 該当するページ定義にナビゲートします。「ページ定義へのアクセス」を参照してください。

  2. 検証の作成ウィザードにアクセスします。

    • ツリー・ビュー: 「ページ・プロセス」で、「検証中」を右クリックして、「検証の作成」を選択します。

    • コンポーネント・ビュー: 「ページ・プロセス」で、「検証」を見つけます。「作成」アイコンをクリックします。

    検証の作成ウィザードが表示されます。

  3. 「検証レベル」で、次のステップを実行します。

    1. 表形式フォーム: この検証に関連付ける表形式フォーム・リージョンを選択します。

    2. 検証レベルの指定: 「表形式フォームの行」を選択します。

    3. 「次へ」をクリックします。

  4. 「順序と名前」で、次のように指定し、「次へ」をクリックします。

    • 順序: このアイテムの順序番号を入力します。

    • 「検証名」: この検証の名前を入力します。

    • エラー表示位置: 検証エラー・メッセージの表示位置を選択します。検証エラー・メッセージは、エラー・ページに表示したり、送信済ページにインラインで表示できます。インライン検証は、通知領域(ページ・テンプレートの一部として定義される)に表示したり、フィールド・ラベル内に表示することができます。

  5. 「検証タイプ」で、表8-13の説明に従って方法を選択します。

    表8-13 表形式フォーム行の検証方法

    検証方法 説明

    SQL

    データベース内の値と比較します。検証タイプを選択します。

    • EXISTS

    • NOT EXISTS

    • SQL式

    詳細は、このページの下部にある構文の例を参照してください。

    PL/SQL

    複雑なロジックが必要な場合に便利です。検証タイプを選択します。

    • PL/SQL式

    • PL/SQLエラー

    • ブールを戻すファンクション

    • エラー・テキストを戻すファンクション

    詳細は、このページの下部にある構文の例を参照してください。


  6. 「検証」で、次のステップを実行します。

    1. 検証コード: 選択した検証タイプに対応するコードを入力します。

    2. エラー・メッセージ: 検証方法に応じて、検証が失敗した場合に表示する検証またはメッセージ・テキストを入力します。

      関連付けられた表形式フォーム列の列ヘッダーのプレースホルダとして、#COLUMN_HEADER#を使用できます。

    3. 常に実行: ページが送信されるときに検証を実行するかどうかを決定します。この属性は、ページを送信するボタンまたは特定のページについての「検証の実行」属性とともに使用します。オプションは次のとおりです。

      • 「はい」: 検証は、ページ上のボタンまたはアイテムの検証設定とは無関係に常に実行されます。定義済条件が依然として適用されることに注意してください。

      • 「いいえ」: 検証は、ページを送信するために使用されるボタンまたはアイテムの「検証の実行」属性が「はい」に設定されているときにのみ実行されます。

      詳細は、「検証を実行するタイミングの決定」を参照してください。

    4. 「次へ」をクリックします。

  7. この検証に適用される条件を定義し、「作成」をクリックします。

8.4.2 検証の実行タイミングの決定

検証を作成するときに、「常に実行」属性で、ページが送信されるときに検証が実行されるかどうかが決定されます。この属性は、ページを送信するボタンまたは特定のページについての「検証の実行」属性とともに使用します。この属性には、次の2つのオプションがあります。

  • 「はい」: 検証は、ページ上のボタンまたはアイテムの検証設定とは無関係に常に実行されます。

    たとえば、現行ユーザーに現行レコードの変更や削除を許可するかどうかを決定するセキュリティ・チェックとしての検証の場合は、「はい」を選択します。これにより、いずれの操作に対しても検証が実行され、権限のないユーザーによる変更を防ぐことができます。

  • 「いいえ」: 検証は、ページを送信するために使用されるボタンまたはアイテムの「検証の実行」属性が「はい」に設定されているときにのみ実行されます。

    たとえば、ユーザーが単にレコードを削除しようとしているときに、アイテムが数値であることを検証してエラー・メッセージを表示しても役立ちません。この場合は、ユーザーが「作成」または「変更の適用」ボタンをクリックしたときにのみ検証を実行する必要があります。

    この動作を実現するには、次のステップを実行します。

    • 検証で、「常に実行」に「いいえ」を設定します。

    • 「作成」および「変更の適用」ボタンでは、「検証の実行」に「はい」を設定します。

    • 「削除」ボタンでは、「検証の実行」に「いいえ」を設定し、不要な検証を回避します。

8.4.3 検証エラー・メッセージの表示方法の定義

検証エラー・メッセージをインライン表示(検証が実行されたページで表示)するか、個別のエラー・ページで表示するかを選択できます。

検証エラー・メッセージの表示方法を定義するには、次のステップを実行します。

  1. 該当するページ定義にナビゲートします。「ページ定義へのアクセス」を参照してください。

  2. 検証の編集ページに移動します。

    • ツリー・ビュー: 「ページ・プロセス」で「検証中」を見つけ、「検証」ブランチを展開します。検証名を右クリックして「編集」を選択します。

    • コンポーネント・ビュー: 「検証」で、該当する検証を選択します。

  3. 「エラー・メッセージ」までスクロールします。

  4. 「エラー・メッセージ」に、エラー・メッセージ・テキストを入力します。詳細は、アイテム・ヘルプを参照してください。

    検証エラー・メッセージは、エラー・ページに表示したり、既存ページ内にインラインで表示できます。

  5. エラー・メッセージの表示から、次のいずれかを選択します。

    • 「フィールドおよび通知でインライン表示」: エラーは、フィールド・ラベル内および通知領域(ページ・テンプレートの一部として定義される)にインラインで表示されます。

    • 「フィールドでインライン表示」: エラーはフィールド・ラベル内にインラインで表示されます

    • 「通知でインライン表示」: エラーは、通知領域(ページ・テンプレートの一部として定義される)にインラインで表示されます。

    • 「エラー・ページ」: エラーは、個別のエラー・ページに表示されます。すべての処理(検証を含む)を停止するハード・エラーを作成する場合は、エラー・ページにエラーを表示する必要があります。

    「フィールドでインライン表示」または「フィールドおよび通知でインライン表示」を選択した場合は、アイテムをエラー・メッセージに関連付ける必要があります。「関連付けられたアイテム」リストから、アイテムを選択します。


    ヒント:

    「フィールドでインライン表示」または「フィールドおよび通知でインライン表示」を選択した場合、検証エラー・メッセージが表示されてページが再レンダリングされる間、Application Expressエンジンでは計算またはプロセスが実行されないことに注意してください。

  6. 「変更の適用」をクリックします。

8.4.3.1 「エラーに移動」リンクについて

関連付けるアイテムを定義すると、Oracle Application Expressによって、対応するエラー・メッセージの隣の通知表示位置に「エラーに移動」リンクがレンダリングされます。クリックすると、ユーザーのフォーカスが関連付けられたアイテムに移動します。

「エラーに移動」テキストを変更して、デフォルトのテキストを変更したり、Oracle Application Expressによってデフォルトでは翻訳されない言語に翻訳することができます。いずれの場合でも、必要なテキストと言語とともに、APEX.GO_TO_ERRORという名前のテキスト・メッセージを定義してください。さらに、APEX.GO_TO_ERRORテキスト・メッセージのテキストを単なるシングル・スペースに設定して、この機能を無効化し、「エラーに移動」リンクを削除できます。詳細は、「Oracle Application Expressにより内部使用されるメッセージの翻訳」を参照してください。

8.4.4 検証の条件付き実行

「条件」で、検証を実行するタイミングおよび検証を実行するかどうかを制御できます。

既存の検証に対して条件を作成するには、次のステップを実行します。

  1. 該当するページ定義にナビゲートします。「ページ定義へのアクセス」を参照してください。

  2. 検証の編集ページに移動します。

    • ツリー・ビュー: 「ページ・プロセス」で「検証中」を見つけ、「検証」ブランチを展開します。検証名を右クリックして「編集」を選択します。

    • コンポーネント・ビュー: 「検証」で、該当する検証を選択します。

  3. 「条件」までスクロールします。

  4. 「条件」で、次のように指定します。

    1. 対象ボタン: ページ・ボタンを選択します。選択したボタンをユーザーがクリックすると、検証が実行されます(定義された他の条件によって異なります)。この検証は、指定されたボタンをクリックする以外の方法でページが送信された場合に実行されます。

      ボタンがクリックされない場合、検証を実行する前に他の条件が評価されます。

    2. 実行スコープ: 表形式フォームにのみ適用されます。次のようにして、実行スコープを指定します。

      • 作成済および変更済の列: 表形式フォームで作成および変更した行でのみ検証を実行します。

      • すべての送信済の列: 送信したすべての行で検証を実行します。

    3. 条件タイプ: 条件タイプを選択します。

      • 式属性: 選択した条件タイプに応じて、式属性に値を入力します。

      • 実行条件: 表形式フォームにのみ適用されます。次のいずれかを選択します。

        各行: 条件で表形式フォームの列を参照する場合は、このオプションを選択します。このオプションにより、表形式フォームの各行で条件が評価されます。

        1回: 表形式フォームに固有の値を参照しない場合は、このオプションを選択します。

      指定した条件に一致した場合、検証がレンダリングまたは処理されます。

  5. 「変更の適用」をクリックします。

8.4.5 検証が失敗した場合の処理

ページが送信され一部の検証が失敗した場合、Oracle Application Expressは既存のページを、すべてのインライン検証エラーを含めて再表示します。インライン・エラーの表示中は、Oracle Application Expressはページ・レンダリング中(つまり、すべての「ロード時%」の表示ポイント)に実行するように定義されている計算、アプリケーション・プロセスまたはページ・プロセス(行の自動フェッチなど)を実行しません。ただし、計算およびプロセスで「インライン検証エラーあり」条件タイプが使用されている場合のみ例外です。

これらの計算およびプロセスをスキップする理由は、これらによりユーザーが入力したデータが変更される可能性があるためです。たとえば、検証エラーを修正するためにユーザーが実際に入力されたデータを必要とする場合に、行の自動フェッチ・プロセスは、変更されたデータをフェッチし、データベースからの値で上書きします。

計算がスキップされた場合、デバッグ出力に次の内容が表示されます。

Do not perform computation because inline validation errors found.

アプリケーションまたはページ・プロセスがスキップされる場合、デバッグ出力に次の内容が表示されます。

Skip because inline validation errors found.