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

前
 
次
 

10.1 フォームの作成

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

内容は次のとおりです。

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

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

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

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

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

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

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

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

    表10-1 フォーム・ページのタイプ

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

    プロシージャのフォーム

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

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

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

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

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

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

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

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

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

    表形式フォーム

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

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

    SQL問合せのフォーム

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

    サマリー・ページ

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

    Webサービスのフォーム

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

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

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

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

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


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

    ヘルプが使用可能な場合は、アイテムにカーソルをあわせると、カーソルが疑問符付きの矢印に変わります。「フィールドレベル・ヘルプについて」を参照してください。

10.1.2 表形式フォームの作成

表形式フォームを使用すると、1つのページから表内の複数の行を一度に更新できます。ウィザードを使用して作成した表形式フォームでは、データベース表内の複数の行に対して更新、挿入および削除操作を実行できます。このフォームには、バックグラウンドでコミット時ロックを実行してデータの整合性を維持する組込みの複数行更新プロセスが備わっています。

内容は次のとおりです。

10.1.2.1 表形式フォームについて

表形式フォームの作成方法は主に次の2つです。

  • アプリケーションの作成ウィザード

  • ページの作成ウィザード

これらのウィザードを使用して作成した表形式フォームには、自動DMLプロセスが含まれています。これらのウィザードでは、データベース表内の複数の行に対して更新、挿入および削除操作を実行するフォームを作成します。または、表形式フォームを手動で作成することも可能であり、その場合は、更新可能なレポート・リージョンまたは更新可能な列を含む標準レポート・リージョンのいずれかを作成し、それとともに表形式フォームのデータを処理するカスタムPL/SQLページ・プロセスを使用します。


注意:

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

10.1.2.1.1 表形式フォームの実行

表形式フォームを実行すると、データは更新可能な列を含むレポートとしてレンダリングされます。これらの列は、様々なフォーム要素(テキスト・フィールド、テキスト領域、日付ピッカー、選択リスト、ラジオ・グループなど)を使用して示されます。

rprt_tabular_form.gifの説明が続きます
図rprt_tabular_form.gifの説明

デフォルトでは、日付列は「日付ピッカー」アイテム・タイプを使用して作成されます。他の列については、ユーザー・インタフェースのデフォルト値を定義しておくことで、LOVに基づく選択リスト、または数値フィールドと大きなテキスト領域として自動的に作成できます。


関連項目:

Oracle Application Express SQLワークショップ・ガイドの「ユーザー・インタフェースのデフォルト値の管理」

数値フィールドおよび日付フィールドについては、日付と数値の書式マスクを事前に定義したり、初期フォームの生成後にそれらの書式マスクを適用することもできます。

また、各レポートには、(行セレクタと呼ばれる)チェック・ボックス列も含まれています。ユーザーは、この行セレクタを使用して1つ以上の列を選択し、データを更新または削除します。行を追加するには、「行の追加」をクリックします。


ヒント:

列属性を編集して、特定の列の外観を制御できます。

10.1.2.2 表形式フォームの仕組み

表形式フォームは、基礎となる表の列に問合せ列が関連付けられているSQL問合せに基づきます。単一レコードとは異なり、表形式フォームではデータはセッション・ステートに格納されません。表形式フォーム・ページが送信されると、表形式フォームのデータは組込みのデータ操作言語(DML)またはカスタムPL/SQLページ・プロセスを使用して処理されます。

自動DMLを備えた表形式フォームでは、複数行操作に対して次の2つのプロセスが使用されます。

  • 「複数行の更新」(MRU)プロセスでは、作成操作と更新操作を実行します

  • 「複数行の削除」(MRD)プロセスでは、1つ以上の行に対するリクエストを削除します

MRUプロセスとMRDプロセスでは、基礎となる表名と主キー列を参照します。DMLプロセスで正しいレコードを識別できるようにするには、主キー列を表形式フォームのSQL問合せに含め、レポート列を非表示にするか、表示専用(ステートを保存)にする必要があります。新しいレコードの場合、主キー値をNULLにして、新しいレコードとして識別されるようにする必要があります。削除操作は、削除対象の行の行番号を参照することによって実行されます。ユーザーが、カレント・ページ上の1つ以上の行をチェックし、「削除」ボタンをクリックすると、行番号によって対応する主キー値が識別され、一致する行が削除されます。

ウィザードによって生成される表形式フォームの組込みDMLには、更新の喪失を回避するためのチェックサム列が含まれています。コミット時ロックと呼ばれる方法を使用すると、表形式フォームのレンダリング時に各行のチェックサムが計算されます。このチェックサムは、表形式フォームの特別な非表示列に格納されます。更新のためにフォームを送信すると、データベースに格納されている現在のデータで追加のチェックサム・セットが計算されます。表形式フォームの初回レンダリング時に構築されたチェックサムと新しいチェックサムが比較され、不一致が見つかった場合、更新は拒否されます。これは、表形式フォームがレンダリングされてからデータが送信されるまでの間に、データベース内のデータが別のユーザーまたは別のプロセスによって変更されたためです。

また、ウィザードによって生成される表形式フォームでは、一部の列に対して検証が自動的に作成されます。検証は、基礎となる表でNOT NULLに設定されている列、およびタイプがNUMBERDATEまたはTIMESTAMPの列に対して作成されます。ユーザーの選択または定義済のユーザー・インタフェースのデフォルト値に基づいて、列が読取り専用に設定されている場合、検証は作成されません。

10.1.2.3 アプリケーションの作成ウィザードを使用した表形式フォームの作成

アプリケーションの作成ウィザードは、複数のページおよびコンポーネントで構成される基本的なOracle Application Expressアプリケーションを簡単に作成できるように設計されています。そのため、このウィザードでは、一般的なベスト・プラクティスに基づいてアプリケーションが生成され、ページの作成ウィザードに含まれているいくつかの高度なオプションは使用されません。


ヒント:

表形式の作成時には、汎用列テンプレートを使用し、列レポート・テンプレートは使用しないことをお薦めします。「レポート・テンプレート」を参照してください。

アプリケーションの作成ウィザードを使用して表形式フォームを作成するには、次のステップを実行します。

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

  2. 作成」ボタンをクリックします。

  3. 「方法」で、「データベース」を選択し、「次へ」をクリックします。

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

    1. アプリケーション: アプリケーションを識別するための一意の整数値を入力します。3000から9000の範囲のアプリケーションIDは、Oracle Application Expressの内部使用向けに予約されています。

    2. 名前: アプリケーションを識別するための名前を入力します。

    3. スキーマ: アプリケーションは、すべてのSQLを特定のデータベース・スキーマとして解析することで、権限を取得します。データベース・スキーマ所有者を指定します。

    4. 作成オプションを指定します。

      • 最初から開始: すべてのページを手動で追加できるようにします。

      • ホームページを含める: 追加された新しいページの親として自動的に機能する空白ページを含みます。リスト・リージョンもホーム・ページに作成され、追加ページへのナビゲーションが用意されます。

      • 以前作成したアプリケーション・モデルを使用: 既存のアプリケーション定義を再利用します。既存のアプリケーション定義を使用すると、アプリケーションのプロパティ値を再入力せずに、このウィザードを実行できます。

        この場合でも、他のアプリケーション属性をすべて定義する必要がありますが、一部の属性については、別のアプリケーションから共有コンポーネントのコピーを選択することできます。

    5. ユーザー・インタフェース: アプリケーションのユーザー・インタフェースを選択します。主としてデスクトップで使用するために設計するアプリケーションの場合は、「デスクトップ」を選択します。

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

  5. 「ページの追加」で、次のステップを実行します。

    1. ページ・タイプの選択: 「表形式フォーム」を選択します。

    2. ページに従属: 該当する場合、従属ページを選択します。詳細は、アイテムのヘルプを参照してください。

    3. 表名: 表を選択します。

    4. 「ページの追加」をクリックします。

      ページ上部に新しいページが表示されます。

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

  6. 「共有コンポーネント」で、共有コンポーネントを別のアプリケーションからコピーするかどうかを指定します。「はい」または「いいえ」を選択します。「はい」を選択した場合は、そのコピー元と、インポートするコンポーネントを選択します。

    共有コンポーネントは、アプリケーション内の複数のページ間で表示または適用できる共通アプリケーション要素です。時間を節約するため、またはアプリケーション間の一貫性を保持するために、共有コンポーネントは既存のアプリケーションからコピーします。コピーできる共有コンポーネントのタイプには、ユーザー・インタフェースのテーマ、LOV、ナビゲーション・バー・エントリ、認可スキームおよび認証スキームがあります。

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

    1. 認証スキーム - アプリケーションにアクセスする前にユーザー・アイデンティティを確立する方法を決定します。オプションは次のとおりです。

      • Application Express: Application Expressサービス管理アプリケーションで作成および保持されるユーザー・アカウント資格証明を使用します。これらは、Application Express開発環境へのログインに使用するアカウントです。また、アプリケーションのエンド・ユーザー用として、このユーザー・アカウント・リポジトリにアカウントを作成することもできます。

      • データベース・アカウント: アプリケーションへのユーザー・ログインには、認証するためにデータベース・スキーマ名(またはユーザー名)とそのパスワードが必要です。このアカウント情報は、Oracle Database全体で管理されます。

      • 認証なし: データベース・アカウント資格証明とも呼ばれます。このオプションを使用すると、ユーザーはmod_plsql DAD定義に格納されているアカウント資格証明を使用して、アプリケーションにアクセスできるようになります。ほとんどの場合、アプリケーションへのアクセス時にログインを行う必要がなくなります。これは、公開アプリケーションを最も速く作成する方法です。

      詳細は、「認証によるユーザー・アイデンティティの証明」を参照してください。

    2. タブ: アプリケーションにタブを含めるかどうかを選択します。1レベルのタブ、2レベルのタブまたはタブなしで作成できます。詳細は、「タブの作成」を参照してください。

      アプリケーションを開発する言語をこの属性で指定します。この言語が、すべての変換の元となるベース言語になります。

    3. 言語: このアプリケーションのプライマリ言語を選択します。

      アプリケーションを開発する言語をこの属性で指定します。この言語が、すべての変換の元となるベース言語になります。

    4. ユーザー言語プリファレンスの派生元: エンジンによるアプリケーション言語の決定方法を指定します。アプリケーションのプライマリ言語は静的にする(Webブラウザの言語から派生される)か、またはユーザー・プリファレンスまたはアイテムから決定されるようにできます。データベース言語の設定では、日付の表示とソート特性を決定します。詳細は、アイテムのヘルプを参照してください。

      「言語」および「ユーザー言語プリファレンスの派生元」属性は、グローバリゼーション属性の編集ページで後から変更できます。「グローバリゼーション属性の設定」を参照してください。

    5. 日付書式: アプリケーションで使用する日付書式を指定します。

      この日付書式を使用して、NLS_DATE_FORMATデータベース・セッションの設定が変更されてから、アプリケーション内のページが表示または送信されます。この値には、有効なOracle日付書式マスクを含むリテラル文字列、または置換構文によるアイテム参照を指定できます。値が指定されていない場合は、データベース・セッションからデフォルトの日付書式が実行時に取得されます。指定されている場合は、DATE型の列から得られるすべてのアイテムの日付書式としても使用されます。

    6. 日時書式: アプリケーションで使用する日時書式を指定します。

      この日時書式は、置換参照&APP_DATE_TIME_FORMAT.を使用するか、PL/SQLでv('APP_DATE_TIME_FORMAT')ファンクションを使用して、アプリケーション内で参照できます。この属性によってNLS設定が変更されることはありません。この値には、有効なOracle日付書式マスクを含むリテラル文字列、または置換構文を使用したアイテム参照を指定できます。この属性値を指定しない場合、APP_DATE_TIME_FORMATへの参照はNLSデータベース・セッションの日付書式とNLS時刻書式を返します。

    7. タイムスタンプ書式: アプリケーションで使用するタイムスタンプ書式を指定します。

      このタイムスタンプ書式を使用して、NLS_TIMESTAMP_FORMATデータベース・セッションの設定が変更されてから、アプリケーション内のページが表示または送信されます。この値には、有効なOracleタイムスタンプ書式マスクを含むリテラル文字列、または置換構文を使用したアイテム参照を指定できます。値が指定されていない場合は、データベース・セッションからデフォルトのタイムスタンプ書式が実行時に取得されます。

    8. タイムスタンプ・タイムゾーン書式: アプリケーションで使用されるタイムゾーン付きタイムスタンプ書式を指定します。

      このタイムゾーン付きタイムスタンプ書式を使用して、NLS_TIMESTAMP_TZ_FORMATデータベース・セッションの設定が変更されてから、アプリケーション内のページが表示または送信されます。この値には、有効なOracleタイムゾーン付きタイムスタンプ書式マスクを含むリテラル文字列、または置換構文を使用したアイテム参照を指定できます。値が指定されていない場合は、データベース・セッションからデフォルトのタイムゾーン付きのタイムスタンプ書式が実行時に取得されます。

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

  8. 「ユーザー・インタフェースのテーマ」で、テーマを選択し、「次へ」をクリックします。

    テーマは、アプリケーション全体のレイアウトおよびスタイルの定義に使用できるテンプレートのコレクションです。「テーマの管理」を参照してください。

  9. 選択した内容を確認し、「作成」をクリックします。


関連項目:

Oracle Application Express SQLワークショップ・ガイドの「ユーザー・インタフェースのデフォルト値の管理」

10.1.2.4 ページの作成ウィザードを使用した表形式フォームの作成

ページの作成ウィザードを使用して、既存のアプリケーションに表形式フォームを追加します。表形式フォームの基となる表の名前を指定すると、その表の列がデータベース・データ・ディクショナリから読み取られます。

表形式フォームでは、表の列に対する挿入、更新および削除操作が実行されます。アプリケーションの作成ウィザードとは異なり、ページの作成ウィザードを使用して表形式フォームを作成するときに、行の識別方法を決定します。表に定義されている主キー、または表内の行を一意に識別するROWID擬似列のいずれかを指定できます。主キーを選択する場合は、3種類の主キーのソース・タイプ(トリガー、PL/SQLファンクションおよび順序)の中から選択できます。


ヒント:

表形式の作成時には、汎用列テンプレートを使用し、列レポート・テンプレートは使用しないことをお薦めします。「レポート・テンプレート」を参照してください。

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

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

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

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

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

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

    表形式フォームの作成ウィザードが表示されます。

  6. 「表および列」で、次のように指定します。

    1. 表/ビューの所有者: 表形式フォームのベースにする表またはビューの所有者を選択します。

    2. 表/ビューの名前: 表形式フォーム・リージョンに含める列を含む表またはビューを選択します。

    3. 列の選択: 表形式フォームに含める1つ以上の列を選択します。その後のページで、どの列を更新可能にするかを定義します。

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

    5. ユーザー・インタフェースのデフォルト値: ユーザー・インタフェースのデフォルト値を使用するかどうかを選択します。詳細は、アイテム・ヘルプと『Oracle Application Express SQLワークショップ・ガイド』の「ユーザー・インタフェースのデフォルト値の管理」を参照してください。

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

    次に、主キーを定義します。表形式フォームでは、データベース内の表の行に対する挿入、更新および削除操作が実行されます。表に定義されている主キー、または表内の行を一意に識別するROWID擬似列のいずれかを使用して、行を識別します。

  7. 「主キー」で、次のいずれかの項目を選択します。

    • データベースで管理(ROWID): 表形式フォームは、ROWID擬似列を使用して、更新および削除する行を識別します。

    • 主キー列の選択: 表形式フォームは、ソース表の主キー列を使用します。

  8. 「データベースで管理(ROWID)」を選択した場合は、「次へ」をクリックして続行します。

  9. 「主キー列の選択」を選択した場合は、次のようにします。

    1. 主キー列1: 主キーの最初の列を選択します。

    2. 主キー列2: 複合主キーが含まれている場合は、この属性の2つ目の主キー列を指定します。この属性はオプションです。

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

    4. 「ソース・タイプ」で、主キーの移入方法を選択します。

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

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

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

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

  10. 「更新可能な列」で、次のステップを実行します。

    1. 更新可能な列: フォームに含める更新可能な列を選択します。

      ページの作成後、列の順序またはSQL問合せを変更できます。

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

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

    1. ページ: 更新可能な新しいレポートを含めるページを選択するか、または新しいページ番号を入力します。

    2. ページ名: 新しいページを作成する場合は、名前を入力します。

    3. リージョン・タイトル: 更新可能なレポートが表示されるリージョンの名前を入力します。

    4. リージョン・テンプレート: 更新可能なレポート・リージョンのリージョン・テンプレートを選択します。

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

    6. ブレッドクラム: ページでブレッドクラム・ナビゲーション・コントロールを使用するかどうか、およびどのブレッドクラム・ナビゲーション・コントロールを使用するかを選択します。

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

  12. 「タブ・オプション」で、このページでのタブの表示方法を示すオプションを選択し、「次へ」をクリックします。

  13. 「ボタンとブランチ」で、次のステップを実行します。

    1. 「取消」ボタン・ラベル: 「取消」ボタンに表示するテキストを入力します。

    2. ページにブランチ: ユーザーが「取消」をクリックしたときの、ブランチ先のページ番号を指定します。

    3. 「送信」ボタン・ラベル: 「送信」ボタンに表示するテキストを入力します。

    4. ページにブランチ: ユーザーが「送信」をクリックしたときの、ブランチ先のページ番号を指定します。

    5. 「削除」ボタン・ラベル: 「削除」ボタンに表示するテキストを入力します。

    6. 「行の追加」ボタン・ラベル: 「行の追加」ボタン・ラベルに表示するテキストを入力します。

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

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

    成功メッセージが表示されます。

10.1.2.5 表形式フォームの列の順序とリージョン・ソースの同期

クラシック・レポートの列の順序を、リージョン・ソースの問合せで定義された列の順序と同期化するには、次のステップを実行します。

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

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

  3. 表形式フォームを含むページを選択します。

    ページ定義が表示されます。

  4. レポート属性ページを表示するには、次のステップを実行します。

    • ツリー・ビュー: 表形式フォーム・リージョンを右クリックし、「レポート属性の編集」を選択します。

    • コンポーネント・ビュー: 表形式フォーム・リージョンの横にある「レポート」リンクをクリックします。

  5. 「タスク」から、「列の順序とリージョン・ソースの同期化」を選択します。

  6. 「同期化」をクリックします。

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

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

内容は次のとおりです。

10.1.3.1 マスター・ディテール・フォームについて

マスター・ディテール・フォームを実行すると、データは様々なフォーム要素(テキスト・フィールド、テキスト領域、日付ピッカー、選択リスト、ラジオ・グループなど)を使用してレポートとしてレンダリングされます。デフォルトでは、日付列は「日付ピッカー」アイテム・タイプを使用して作成されます。他の列については、ユーザー・インタフェースのデフォルト値を定義しておくことで、LOVに基づく選択リスト、または数値フィールドと大きなテキスト領域として自動的に作成できます。

rprt_master_detail2.gifの説明が続きます
図rprt_master_detail2.gifの説明

「マスター・ディテール」では、マスター・レコードは標準フォームとして表示され、詳細レコードはページの下部の表形式フォームに表示されます。「順序へのアイテムの追加」をクリックして、新しい行を追加します。


関連項目:

Oracle Application Express SQLワークショップ・ガイドの「ユーザー・インタフェースのデフォルト値の管理」

数値フィールドおよび日付フィールドについては、日付と数値の書式マスクを事前に定義したり、初期フォームの生成後にそれらの書式マスクを適用することもできます。また、ウィザードによって生成されるマスター・ディテール・フォームでは、一部の列に対して検証が自動的に作成されます。検証は、基礎となる表でNOT NULLに設定されている列、およびタイプがNUMBERDATEまたはTIMESTAMPの列に対して作成されます。ユーザーの選択または定義済のユーザー・インタフェースのデフォルト値に基づいて、列が読取り専用に設定されている場合、検証は作成されません。


ヒント:

列属性を編集して、特定の列の外観を制御できます。

10.1.3.2 アプリケーションの作成ウィザードを使用したマスター・ディテール・フォームの作成

アプリケーションの作成ウィザードは、複数のページおよびコンポーネントで構成される基本的なOracle Application Expressアプリケーションを簡単に作成できるように設計されています。このウィザードでは、一般的なベスト・プラクティスに基づいてアプリケーションが生成され、ページの作成ウィザードに含まれているいくつかの高度なオプションは使用されません。

アプリケーションの作成ウィザードを使用してマスター・ディテール・フォームを作成するには、次のステップを実行します。

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

  2. 作成」ボタンをクリックします。

  3. 「方法」で、「データベース」を選択し、「次へ」をクリックします。

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

    1. アプリケーション: アプリケーションを識別するための一意の整数値を入力します。3000から9000の範囲のアプリケーションIDは、Oracle Application Expressの内部使用向けに予約されています。

    2. 名前: アプリケーションを識別するための名前を入力します。

    3. スキーマ: アプリケーションは、すべてのSQLを特定のデータベース・スキーマとして解析することで、権限を取得します。データベース・スキーマ所有者を指定します。

    4. 作成オプションを指定します。

      • 最初から開始: すべてのページを手動で追加できるようにします。

      • ホームページを含める: 追加された新しいページの親として自動的に機能する空白ページを含みます。リスト・リージョンもホーム・ページに作成され、追加ページへのナビゲーションが用意されます。

      • 以前作成したアプリケーション・モデルを使用: 既存のアプリケーション定義を再利用します。既存のアプリケーション定義を使用すると、アプリケーションのプロパティ値を再入力せずに、このウィザードを実行できます。

        この場合でも、他のアプリケーション属性をすべて定義する必要がありますが、一部の属性については、別のアプリケーションから共有コンポーネントのコピーを選択することできます。

    5. ユーザー・インタフェース: アプリケーションのユーザー・インタフェースを選択します。主としてデスクトップで使用するために設計するアプリケーションの場合は、「デスクトップ」を選択します。

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


    ヒント:

    ログイン・ページと空白ページで構成されるインスタント・アプリケーションを作成するには、「アプリケーションの作成」ボタンをクリックします。

    次に、ページをアプリケーションに追加します。

  5. 「ページ」で、次のステップを実行します。

    1. ページ・タイプの選択: 「マスター・ディテール」を選択します。

    2. ページに従属: 該当する場合、従属ページを選択します。詳細は、アイテムのヘルプを参照してください。

    3. マスター表名: マスター表として使用する表またはビューを選択します。この表は、レポート・ページ、およびマスター・ディテール・ページのマスター・フォームを作成するために使用されます。

    4. ディテール表名: ディテール表として使用する表またはビューを選択します。

      外部キーを使用して選択したマスター表に関連付けられている表およびビューのみが表示されます。

    5. 「ページの追加」をクリックします。

      ページ上部に新しいページが表示されます。

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

  6. 「共有コンポーネント」で、共有コンポーネントを別のアプリケーションからコピーするかどうかを指定します。「はい」または「いいえ」を選択します。「はい」を選択した場合は、そのコピー元と、インポートするコンポーネントを選択します。

    共有コンポーネントは、アプリケーション内の複数のページ間で表示または適用できる共通アプリケーション要素です。時間を節約するため、またはアプリケーション間の一貫性を保持するために、共有コンポーネントは既存のアプリケーションからコピーします。コピーできる共有コンポーネントのタイプには、ユーザー・インタフェースのテーマ、LOV、ナビゲーション・バー・エントリ、認可スキームおよび認証スキームがあります。

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

    1. 認証スキーム: アプリケーションにアクセスする前にユーザー・アイデンティティを確立する方法を決定します。オプションは次のとおりです。

      • Application Express: Oracle Application Expressサービス管理アプリケーションで作成および保持されるユーザー・アカウント資格証明を使用します。これらは、Application Express開発環境へのログインに使用するアカウントです。また、アプリケーションのエンド・ユーザー用として、このユーザー・アカウント・リポジトリにアカウントを作成することもできます。

      • データベース・アカウント: アプリケーションへのユーザー・ログインには、認証するためにデータベース・スキーマ名(またはユーザー名)とそのパスワードが必要です。このアカウント情報は、Oracle Database全体で管理されます。

      • 認証なし: データベース・アカウント資格証明とも呼ばれます。このオプションを使用すると、ユーザーはmod_plsql DAD定義に格納されているアカウント資格証明を使用して、アプリケーションにアクセスできるようになります。ほとんどの場合、アプリケーションへのアクセス時にログインを行う必要がなくなります。これは、公開アプリケーションを最も速く作成する方法です。

      詳細は、「認証によるユーザー・アイデンティティの証明」を参照してください。

    2. タブ: アプリケーションにタブを含めるかどうかを選択します。1レベルのタブ、2レベルのタブまたはタブなしで作成できます。詳細は、「タブの作成」を参照してください。

      アプリケーションを開発する言語をこの属性で指定します。この言語が、すべての変換の元となるベース言語になります。

    3. 言語: このアプリケーションのプライマリ言語を選択します。

      アプリケーションを開発する言語をこの属性で指定します。この言語が、すべての変換の元となるベース言語になります。

    4. ユーザー言語プリファレンスの派生元: エンジンによるアプリケーション言語の決定方法を指定します。アプリケーションのプライマリ言語は静的にする(Webブラウザの言語から派生される)か、またはユーザー・プリファレンスまたはアイテムから決定されるようにできます。データベース言語の設定では、日付の表示とソート特性を決定します。詳細は、アイテムのヘルプを参照してください。

      「言語」および「ユーザー言語プリファレンスの派生元」属性は、グローバリゼーション属性の編集ページで後から変更できます。「グローバリゼーション属性の設定」を参照してください。

    5. 日付書式: アプリケーションで使用する日付書式を指定します。

      この日付書式を使用して、NLS_DATE_FORMATデータベース・セッションの設定が変更されてから、アプリケーション内のページが表示または送信されます。この値には、有効なOracle日付書式マスクを含むリテラル文字列、または置換構文によるアイテム参照を指定できます。値が指定されていない場合は、データベース・セッションからデフォルトの日付書式が実行時に取得されます。指定されている場合は、DATE型の列から得られるすべてのアイテムの日付書式としても使用されます。

    6. 日時書式: アプリケーションで使用する日時書式を指定します。

      この日時書式は、置換参照&APP_DATE_TIME_FORMAT.を使用するか、PL/SQLでv('APP_DATE_TIME_FORMAT')ファンクションを使用して、アプリケーション内で参照できます。この属性によってNLS設定が変更されることはありません。この値には、有効なOracle日付書式マスクを含むリテラル文字列、または置換構文を使用したアイテム参照を指定できます。この属性値を指定しない場合、APP_DATE_TIME_FORMATへの参照はNLSデータベース・セッションの日付書式とNLS時刻書式を返します。

    7. タイムスタンプ書式: アプリケーションで使用するタイムスタンプ書式を指定します。

      このタイムスタンプ書式を使用して、NLS_TIMESTAMP_FORMATデータベース・セッションの設定が変更されてから、アプリケーション内のページが表示または送信されます。この値には、有効なOracleタイムスタンプ書式マスクを含むリテラル文字列、または置換構文を使用したアイテム参照を指定できます。値が指定されていない場合は、データベース・セッションからデフォルトのタイムスタンプ書式が実行時に取得されます。

    8. タイムスタンプ・タイムゾーン書式: アプリケーションで使用されるタイムゾーン付きタイムスタンプ書式を指定します。

      このタイムゾーン付きタイムスタンプ書式を使用して、NLS_TIMESTAMP_TZ_FORMATデータベース・セッションの設定が変更されてから、アプリケーション内のページが表示または送信されます。この値には、有効なOracleタイムゾーン付きタイムスタンプ書式マスクを含むリテラル文字列、または置換構文を使用したアイテム参照を指定できます。値が指定されていない場合は、データベース・セッションからデフォルトのタイムゾーン付きのタイムスタンプ書式が実行時に取得されます。

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

  8. 「ユーザー・インタフェースのテーマ」で、テーマを選択し、「次へ」をクリックします。

    テーマは、アプリケーション全体のレイアウトおよびスタイルの定義に使用できるテンプレートのコレクションです。「テーマの管理」を参照してください。

  9. 選択内容を確認して、「アプリケーションの作成」をクリックします。

10.1.3.3 ページの作成ウィザードを使用したマスター・ディテール・フォームの作成

ページの作成ウィザードでは、データベースに外部キー・リレーションシップが定義されていない2つの表からマスター・ディテールを作成できます。基礎となるデータベースで外部キーと適切に定義されたリレーションシップを使用することをお薦めしますが、開発者は必ずしも各自のデータベース・モデルを変更できるわけではありません。

ウィザードを使用して作成したマスター・ディテール・フォーム・ページ上のマスター・フォームには、ユーザーがマスター結果セット内で前後に移動するためのボタンが含まれています。ウィザードの実行中に、どの列でナビゲーションの順序を決定するかを選択します。また、2ページまたは3ページで構成されるマスター・ディテール・フォームを作成し、個別のページの単一レコード編集でレポートに表示される詳細レコードを含めることもできます。

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

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

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

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

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

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

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

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

    1. 表/ビューの所有者: マスター表を所有するスキーマを選択します。

    2. 表/ビューの名前: マスター・ページに含める列を含む表またはビューを選択します。

      そのオブジェクト内の列が表示されます。

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

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

    1. 関連する表のみの表示: ディテール表のリストを、マスター表に関連する表のみに制限するかどうかを指定します。「はい」または「いいえ」を選択します。

    2. 表/ビューの所有者: 表またはビューの所有者を選択します。デフォルトで選択された表またはビューの所有者は、アプリケーションの所有者と同一です。アプリケーションの所有者が他のスキーマの表またはビューに対するSELECT権限を持っている場合、他のスキーマを選択できます。

    3. 表/ビューの名前: ディテール・ページに含める列を含む表またはビューを選択します。

      そのオブジェクト内の列が表示されます。

    4. ディテール・ページの列を選択してください: ディテール・ページに表示する列を選択します。後で列を追加できます。

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

    次に、主キーを定義します。フォームでは、データベース内の表の行に対する挿入、更新および削除操作が実行されます。表に定義されている主キー、または表内の行を一意に識別するROWID擬似列のいずれかを使用して、行を識別します。

  8. 「主キーの定義」で、各表に対して次のいずれかを選択します。

    • データベースで管理(ROWID): ROWID擬似列を使用して、更新および削除する行を識別します。

    • 主キー列の選択: ソース表の主キー列を使用します。

  9. 「データベースで管理(ROWID)」を選択した場合は、次のステップを実行します。

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

    2. 「マスター・オプション」で、マスター表とディテール表の関係を定義します。列名(表名で完全修飾された名前)を入力するか、またはリストから列名を選択できます。「次へ」をクリックします。

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

  10. 「主キー列の選択」を選択した場合は、次のようにします。

    1. 「主キーの定義」で、各表について次の項目を選択します。

      • 主キー列1: 主キーの最初の列を選択します。

      • 主キー列2: 複合主キーが含まれている場合は、この属性の2つ目の主キー列を指定します。この属性はオプションです。

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

    2. 「主キーのソース」で、主キーの移入方法を選択し、「次へ」をクリックします。

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

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

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

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

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

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

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

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

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

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

    1. ページ属性: マスター・ページおよびディテール・ページ情報を確認および編集します。

    2. ブレッドクラム: ブレッドクラムを作成するかどうかを指定します。ブレッドクラム・エントリを作成するには、次のステップを実行します。

      • エントリ名(マスター・レポート): マスター・レポート・ページのブレッドクラム・エントリの名前を指定します。

      • エントリ名(マスター・ディテール・ページ): マスター・ディテール・ページのブレッドクラム・エントリの名前を指定します。

      • 親エントリの選択: このブレッドクラム・エントリの親エントリを選択します。

      • 親エントリ: このアイテムは、親エントリを選択している場合に表示されます。

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

  13. 「タブ・オプション」で、タブ・セットを含めるかどうかを指定し、「次へ」をクリックします。

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

10.1.4 フォームの手動作成

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

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

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

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

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

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

  2. HTMLリージョンを作成します。「リージョンの作成」を参照してください。

  3. ページへのアイテムの追加を開始します。「ページ・レベル・アイテムの作成」を参照してください。

10.1.4.1 フォームの処理

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

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

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

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

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

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

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

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

  2. ページ・プロセスの作成ウィザードにアクセスします。

    • ツリー・ビュー: 該当する場所で、右クリックして「プロセスの作成」をクリックします。

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

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

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

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

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

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

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

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

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

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

10.1.4.1.2 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;

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

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

10.1.4.2 フォームの移入

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の値は、設定済です。

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

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

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

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

  • 検証を作成し、エラー・メッセージ・テキストを指定します。詳細は、「アイテムとページ検証の作成」を参照してください。

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

内容は次のとおりです。

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

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

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

  2. ページ検証の編集ページにナビゲートします。

    • ツリー・ビュー: 検証名を右クリックし、「編集」をクリックします。

    • コンポーネント・ビュー: 「検証」で、関連付ける検証アイテムを選択します。

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

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

    • エラー・メッセージ表示位置: 表示位置を検証します。

    • 関連付けられたアイテム: 対象の検証と関連付けるアイテムを選択します。

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

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

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

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