ヘッダーをスキップ
Oracle® Application Expressアプリケーション・ビルダー・ユーザーズ・ガイド
リリース3.2
B53794-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

フォームの作成

様々なタイプのフォームをアプリケーションに含めることができます。表内の単一行のみを更新できるフォーム、または同時に複数行を更新できるフォームを含めることができます。アプリケーション・ビルダーには、自動的にフォームを作成するために使用できる多くのウィザードが含まれていますが、手動でフォームを作成することもできます。

この項に含まれる内容は次のとおりです。

ウィザードを使用したフォームの作成

フォームを作成する最も簡単な方法は、ウィザードを使用することです。たとえば、表またはビューのフォーム・ウィザードでは、1つの表の1列ごとに1つのアイテムを作成します。このウィザードには、主キーを使用した表への行の挿入、表の行の更新および削除に必要なボタンおよびプロセスが含まれています。各リージョンには、定義名および表示位置が指定されています。その他の属性には、アイテム、ボタン、プロセスおよびブランチがあります。

ウィザードを使用してフォームを作成するには、次のステップを実行します。

  1. 「ワークスペース」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。

  2. アプリケーションを選択します。

  3. 「ページの作成」をクリックします。

  4. 「フォーム」を選択して、「次へ」をクリックします。

  5. 「フォーム」で、表 7-6に示すフォーム・ページのタイプを選択します。

    表 7-6 フォーム・ページ・タイプ

    フォーム・ページ・タイプ 説明

    プロシージャのフォーム

    ストアド・プロシージャの引数に基づくフォームを構築します。ストアド・プロシージャまたはパッケージに実装済のロジックまたはデータ操作言語(DML)が存在する場合は、この方法を使用します。

    表またはビューのフォーム

    データベース表の単一行を更新できるフォームを作成します。

    レポート付きの表のフォーム

    2つのページを作成します。1つのページにはレポートが表示されます。各行に2ページ目へのリンクが提供され、これを使用して各レコードを更新できます。

    注意: このウィザードでは、127列を超える列が含まれている表はサポートされていません。127列を超える列を選択すると、エラーが発生します。

    マスター・ディテール・フォーム

    1つのHTMLフォーム内にマスター行および複数のディテール行を表示するフォームを作成します。このフォームを使用すると、2つの表またはビューに対し、値の問合せ、挿入、更新および削除を行うことができます。

    関連項目: 「マスター・ディテール・フォームの作成」

    表形式フォーム

    データベースの複数の行を更新できるフォームを作成します。

    関連項目: 「表形式フォームの作成」

    SQL問合せのフォーム

    EQUIJOINなどのSQL問合せによって戻される列に基づくフォームを作成します。

    サマリー・ページ

    読取り専用のフォームを作成します。通常、ウィザードの最後に確認ページを提供するために使用します。

    Webサービスのフォーム

    Webサービスの定義に基づいて、アイテムを含むページを作成します。このウィザードでは、ユーザー入力フォーム、Webサービスをコールするプロセスおよび送信ボタンを作成します。

    関連項目: 「Webサービスでのフォームの作成」

    Webサービスのフォームとレポート

    Webサービスの定義に基づいて、アイテムを含むページを作成します。このウィザードでは、ユーザー入力フォーム、Webサービスをコールするプロセスおよび送信ボタンを作成し、レポートに結果を表示します。

    関連項目: 「Webサービスでの入力フォームとレポートの作成」


  6. 画面に表示されるステップに従います。特定のフィールドの詳細を表示するには、アイテム・ラベルをクリックします。

    ヘルプが利用できる場合は、アイテム・ラベル上にカーソルを重ねると、アイテム・ラベルが赤色に変わり、カーソルが矢印と疑問符に変わります。「フィールドレベル・ヘルプについて」を参照してください。

表形式フォームの作成

表形式フォームを使用すると、表の複数の行を一度に更新できます。「表形式フォーム」ウィザードでは、データベース表の複数の行に対して更新、挿入および削除を行うフォームを作成します。

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

  1. 「ワークスペース」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。

  2. アプリケーションを選択します。

  3. 「ページの作成」をクリックします。

  4. 「フォーム」を選択して、「次へ」をクリックします。

  5. 「表形式フォーム」を選択して、「次へ」をクリックします。

    「表形式フォーム」ウィザードが表示されます。

  6. 「表/ビューの所有者」で、次のステップを実行します。

    1. 表形式フォームの基となる表またはビューの所有者を指定します。

    2. 表で実行する操作(たとえば、更新、挿入、削除など)を選択します。

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

  7. 「表/ビューの名前」について、表を選択して「次へ」をクリックします。

  8. 「表示列」で、次のステップを実行します。

    1. フォームに含める列(更新可能および更新不可)を選択します。

      ページの作成後に、列の順序またはSQL問合せを変更できるので注意してください。

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

  9. 「主キー」について、「主キー」列とセカンダリの「主キー」列(適用可能な場合)を選択して「次へ」をクリックします。

  10. 「主キーのソース」について、主キー列のソース・タイプを選択して「次へ」をクリックします。有効なオプションは、次のとおりです。

    • 既存のトリガー - 表にトリガーが定義されている場合はこのオプションを選択します。このオプションは、フォームを完成させた後に主キー列ソースを指定する場合も選択できます。

    • カスタムPL/SQLファンクション - 戻りキー値を生成するPL/SQLファンクションを指定する場合はこのオプションを選択します。

    • 既存の順序 - 選択されているスキーマで使用可能な順序のリストから順序を選択する場合は、このオプションを選択します。

  11. 「更新可能な列」で、更新可能にする列を選択して「次へ」をクリックします。

  12. 「ページおよびリージョン属性」で、次のステップを実行します。

    1. ページおよびリージョン情報を指定します。

    2. リージョン・テンプレートを選択します。

    3. レポート・テンプレートを選択します。

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

  13. 「タブ」で、このページに対するタブ実装を指定して「次へ」をクリックします。

  14. 「ボタン・ラベル」で、各ボタンに表示される表示テキストを入力して「次へ」をクリックします。

  15. 「ブランチ」で、「送信」および「取消」ボタンをクリックした後、ブランチ先のページを指定して「次へ」をクリックします。

  16. 「終了」をクリックします。


注意:

表形式フォームのSQL文の選択リストを、生成された後に変更することはお薦めしません。問合せを変更する場合は、更新可能列の値が、Application Expressエンジンによってデータベースから問合せされた後に変更されていないことを確認してください。


チュートリアルを参照:

Oracle Application Expressアドバンスト・チュートリアルの「表形式フォームの作成方法」

マスター・ディテール・フォームの作成

マスター・ディテール・フォームは、データベースの2つの表の1対多関係を示します。通常、マスター・ディテール・フォームには、1つのHTMLフォーム内にマスター行および複数のディテール行が表示されます。このフォームを使用すると、2つの表またはビューに対し、値の挿入、更新および削除を行うことができます。

マスター・ディテール・フォームを作成するには、次のステップを実行します。

  1. 「ワークスペース」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。

  2. アプリケーションを選択します。

  3. 「ページの作成」をクリックします。

  4. 「フォーム」を選択して、「次へ」をクリックします。

  5. 「マスター・ディテール・フォーム」を選択して、「次へ」をクリックします。

    マスター・ディテール・ウィザードが表示されます。

  6. 「マスター表」で、次のステップを実行します。

    1. 表またはビューの所有者を選択します。

    2. 表またはビューの名前を選択します。

      このオブジェクトの列は、「選択可能な列」の下に表示されます。

    3. フォームに表示する列を選択してから矢印キーをクリックして、それを「表示列」に移動します。

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

  7. 「ディテール表」で、次のステップを実行します。

    1. 「はい」または「いいえ」を選択して、関連する表のみを表示するかどうか指定します。

    2. 表またはビューの所有者を選択します。

    3. 表またはビューの名前を選択します。

      このオブジェクトの列は、「選択可能な列」の下に表示されます。

    4. フォームに表示する列を選択してから矢印キーをクリックして、それを「表示列」に移動します。

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

  8. 「主キー」で、次のステップを実行します。

    1. マスター表の主キー - マスター表の1つまたは複数の主キーを選択します。マスター表には最大2つの主キーを選択できます。

    2. ディテール表の主キー - ディテール表の主キーを選択します。ディテール表の主キーは、最大で2つ選択できます。

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

  9. 「マスター・ディテール・リンク」で、マスター表とディテール表の関係を定義し、「次へ」をクリックします。

  10. 「主キーのソース」で、マスター表の主キー列を選択し、「次へ」をクリックします。次に、ディテール表の主キー列を選択し、「次へ」をクリックします。オプションは次のとおりです。

    • 既存のトリガー - 主キーを移入するためトリガーが定義されている場合、またはユーザーが主キー値を手動で入力することが予想される場合は、このオプションを選択します。ディテール表では、ユーザー入力の主キー値はサポートされません。

    • カスタムPL/SQLファンクション - 主キーを移入するためPL/SQLファンクションを指定する場合は、このオプションを選択します。

    • 既存の順序 - 既存の順序が主キーの生成に使用される場合は、このオプションを選択します。

  11. 「マスター・オプション」で、マスター行のナビゲーションを含めるかどうかを指定して「次へ」をクリックします。

    マスター行のナビゲーションを含める場合は、ナビゲーション順の列を定義します。ナビゲーション順の列が定義されていないと、マスターの更新フォームは、主キー列を使用してナビゲートします。

  12. 「レイアウト」で、マスター・ディテールの構築方法を指定して「次へ」をクリックします。オプションは次のとおりです。

    • 「同一ページで表形式フォームとしてディテールの編集」では、2ページのマスター・ディテールが作成されます。「別のページでディテールの編集」では、3ページのマスター・ディテールが作成されます。

    • 「別のページでディテールの編集」では、3ページのマスター・ディテールが作成されます。

  13. 「ページ属性」で、マスター・ページおよびディテール・ページ情報を確認および編集してから「次へ」をクリックします。

  14. 「タブ」で、タブ・セットを含めるかどうかを指定して「次へ」をクリックします。

  15. 「作成」をクリックします。

フォームの手動作成

次のステップを実行することによって、フォームを手動で作成することもできます。

  • (ページ・アイテムのコンテナとして機能する)HTMLリージョンを作成します。

  • リージョンに表示するアイテムを作成します。

  • プロセスおよびブランチを作成します。

HTMLリージョンを作成することによって手動でフォームを作成するには、次のステップを実行します。

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

  2. HTMLリージョンを作成します。

    1. 「リージョン」で、「作成」アイコンをクリックします。

    2. リージョン・タイプに「HTML」を選択します。

    3. 画面に表示されるステップに従います。

  3. ページへのアイテムの追加を開始します。

    • 「アイテム」で、「作成」アイコンをクリックします。

    • 画面に表示されるステップに従います。

フォームの処理

フォームを作成したら、次に、基礎となるデータベース表またはビューに対して挿入または更新を行うことによって、ユーザーが入力したデータを処理します。フォームを処理する方法には、3通りあります。

行の自動処理(DML)プロセスの作成

フォームを実装するための一般的な方法の1つは、行の自動処理(DML)プロセスを手動で作成することです。この方法には、3つのメリットがあります。1つ目は、SQLコードを指定する必要がないことです。2つ目は、Oracle Application ExpressによってDMLプロセスが実行されることです。3つ目は、このプロセスによって、ロストした更新の検出が自動的に実行されることです。ロストした更新の検出によって、データに同時にアクセスできる複数のアプリケーションのデータの整合性が保証されます。

この方法を実装するには、次のステップを実行します。

  • アイテムを追加し、「アイテム・ソース」タイプを「データベース列」に定義し、大/小文字が区別される列名を指定します。

  • オプション「常にキャッシュ値より優先」を選択します。

行の自動処理(DML)プロセスを作成するには、次のステップを実行します。

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

  2. 「プロセス」で、「作成」アイコンをクリックします。

  3. プロセスの「データ操作」を選択します。

  4. プロセス・カテゴリの「行の自動処理(DML)」を選択します。

  5. 次のプロセス属性を指定します。

    1. 「名前」フィールドで、プロセスを識別するための名前を入力します。

    2. 「順序」フィールドで、順序番号を指定します。

    3. 「ポイント」リストから、適切なプロセス・ポイントを選択します。通常、「ロード時 - ヘッダーの後」を選択します。

    4. 「タイプ」リストから、「行の自動処理(DML)」を選択します。

  6. 画面に表示されるステップに従います。

1つ以上の挿入文を含むプロセスの作成

この方法でフォームを処理するには、挿入、更新および削除操作を実行する1つ以上のプロセスを作成します。Application Expressエンジンですべての操作を透過的に実行するかわりに、操作の制御はユーザーが行います。

たとえば、3つのアイテムを持つフォームが存在すると想定します。

  • P1_ID: 表に現在表示されている行の主キーを格納するための非表示アイテム。

  • P1_FIRST_NAME: ユーザー入力用のテキスト・フィールド。

  • P1_LAST_NAME: ユーザー入力用のテキスト・フィールド。

また、「挿入」、「更新」および「削除」というラベルの3つのボタンがあるとします。さらに、3つの列idfirst_nameおよびlast_nameを含む表Tがあるとします。この表には、値を指定しなかった場合に自動的にID列が移入されるトリガーがあります。

新しい行の挿入を処理するには、ユーザーが「挿入」ボタンをクリックしたときに実行されるPL/SQLの条件付きプロセスを作成します。次に例を示します。

BEGIN
  INSERT INTO T ( first_name, last_name )
     VALUES  (:P1_FIRST_NAME, :P1_LAST_NAME);
END; 

行の更新を処理するには、PL/SQLの条件付きプロセスをもう1つ作成します。次に例を示します。

BEGIN
    UPDATE T
       SET first_name = :P1_FIRST_NAME,
           last_name = :P1_LAST_NAME
    WHERE ID = :P1_ID;
END; 

行の削除を処理するには、ユーザーが「削除」ボタンをクリックしたときに実行される条件付きプロセスを作成します。次に例を示します。

BEGIN
    DELETE FROM T
    WHERE ID = :P1_ID;
END;

PL/SQL APIを使用したフォーム値の処理

アプリケーションによっては、表へのすべてのアクセスを単一または少数のPL/SQLパッケージにまとめて処理することが適しています。DML操作を処理するパッケージを作成した場合は、このパッケージのプロシージャおよびファンクションを、送信後のPL/SQLプロセスからコールして、リクエストの挿入、更新および削除を処理できます。

フォームの移入

Oracle Application Expressでは、ロード時またはApplication Expressエンジンによるページのレンダリング時にフォームが移入されます。フォームを移入するには、次のステップを実行します。

  • プロセスを作成し、タイプを「行の自動フェッチ」に定義します。

  • 非表示のセッション・ステート・アイテムを参照することによって、フォームを手動で移入します。

行の自動フェッチ・プロセスを作成するには、次のステップを実行します。

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

  2. 「プロセス」で、「作成」をクリックします。

  3. プロセス・タイプの「データ操作」を選択します。

  4. プロセス・カテゴリの「行の自動フェッチ」を選択します。

  5. 次のプロセス属性を指定します。

    1. 「名前」フィールドで、プロセスを識別するための名前を入力します。

    2. 「順序」フィールドで、順序番号を指定します。

    3. 「ポイント」リストから、適切なプロセス・ポイントを選択します。

    4. 「タイプ」リストから、「行の自動フェッチ」を選択します。

  6. 画面に表示されるステップに従います。

非表示のセッション・ステート・アイテムを参照することによって、フォームを手動で移入することもできます。たとえば、PL/SQLタイプのOracle Application Expressプロセスの次のコードでは、enameおよびsalの値が設定されます。この例では、P2_IDという名前の非表示のセッション・ステートを参照することによってフォームを手動で移入する方法も示します。

FOR C1 in (SELECT ename, sal
FROM emp WHERE ID=:P2_ID)
LOOP     
     :P2_ENAME := C1.ename;
     :P2_SAL := C1.sal;
END LOOP;

この例では、次のとおりです。

  • C1は、暗黙カーソルです。

  • P2_IDの値は、設定済です。

  • このプロセスのプロセス・ポイントは、「ロード時 - リージョンの前」またはこれ以前に実行するように設定されます。

フォームでのユーザー入力の検証

検証を使用すると、ユーザーが入力したデータを処理前に確認できます。検証および関連するエラー・メッセージを作成したら、これらを特定のアイテムと関連付けることができます。検証エラー・メッセージをインライン表示(検証が実行されたページで表示)するか、個別のエラー・ページで表示するかを選択できます。

インラインのエラー・メッセージを作成するには、次のステップを実行します。

  • 検証を作成し、エラー・メッセージ・テキストを指定します。

  • 検証を特定のアイテムと関連付けます。

検証の作成

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

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

  2. 「検証」で、「作成」アイコンをクリックします。

  3. 検証の作成」ウィザードが表示されたら、画面に表示されるステップに従います。

    検証タイプは2つのカテゴリに分けられます。

    • アイテム。これらの検証は、「アイテム」という語が先頭に付きます。検証と関連付けられたアイテムに対して一般的な確認を実行できます。

    • コード。これらの検証では、検証ロジックを定義する1つのPL/SQLコードまたはSQL問合せを指定する必要があります。複数アイテムの値の確認または他のデータベース表へのアクセスが必要なカスタム検証を実行するには、このタイプの検証を使用します。

  4. 画面に表示されるステップに従います。


注意:

3,950文字を超える文字は検証できません。

検証と特定のアイテムとの関連付け

アイテムを検証と関連付け、エラー・メッセージ・テキストを指定するには、次のステップを実行します。

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

  2. 「検証」で、関連付ける検証アイテムを選択します。

    検証の属性ページが表示されます。

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

    • 「エラー・メッセージ表示位置」で、表示位置を確認します。

    • 「関連付けられたアイテム」で、この検証と関連付けるアイテムを選択します。

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

エラー・メッセージについて

「エラー・メッセージ表示位置」で、検証エラー・メッセージの表示位置が指定されます。検証エラー・メッセージは、エラー・ページに表示したり、既存ページ内にインラインで表示できます。インライン・エラー・メッセージは、通知領域(ページ・テンプレートの一部として定義される)に表示したり、フィールド・ラベル内に表示できます。

残りのすべての検証を含むプロセスを停止するハード・エラーを作成する場合は、エラー・ページにエラーを表示する必要があります。