この項では、マスター・ディテール・フォームを作成する方法について説明します。
マスター・ディテール・フォームは、データベースの2つの表の1対多関係を示します。通常、マスター・ディテール・フォームには、1つのHTMLフォーム内にマスター行および複数のディテール行が表示されます。このフォームを使用すると、2つの表またはビューに対し、値の挿入、更新および削除を行うことができます。
マスター・ディテール・フォームを実行すると、データは様々なフォーム要素(テキスト・フィールド、テキスト領域、日付ピッカー、選択リスト、ラジオ・グループなど)を使用してレポートとしてレンダリングされます。デフォルトでは、日付列は「日付ピッカー」アイテム・タイプを使用して作成されます。他の列については、ユーザー・インタフェースのデフォルト値を定義しておくことで、LOVに基づく選択リスト、または数値フィールドと大きなテキスト領域として自動的に作成できます。
「マスター・ディテール」では、マスター・レコードは標準フォームとして表示され、詳細レコードはページの下部の表形式フォームに表示されます。この例では、ユーザーは「Add Item to Order」をクリックして新しい行を追加します。
関連項目: Oracle Application Express SQLワークショップ・ガイドの「ユーザー・インタフェースのデフォルト値の管理」 |
数値フィールドおよび日付フィールドについては、日付と数値の書式マスクを事前に定義したり、初期フォームの生成後にそれらの書式マスクを適用することもできます。また、ウィザードによって生成されるマスター・ディテール・フォームでは、一部の列に対して検証が自動的に作成されます。検証は、基礎となる表でNOT NULL
に設定されている列、およびタイプがNUMBER
、DATE
またはTIMESTAMP
の列に対して作成されます。ユーザーの選択または定義済のユーザー・インタフェースのデフォルト値に基づいて、列が読取り専用に設定されている場合、検証は作成されません。
ヒント: 列属性を編集して、特定の列の外観を制御できます。 |
アプリケーションの作成ウィザードは、複数のページおよびコンポーネントで構成される基本的なOracle Application Expressアプリケーションを簡単に作成できるように設計されています。このウィザードでは、一般的なベスト・プラクティスに基づいてアプリケーションが生成され、ページの作成ウィザードに含まれているいくつかの高度なオプションは使用されません。
アプリケーションの作成ウィザードを使用してマスター・ディテール・フォームを作成するには、次のステップを実行します。
「ワークスペース」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
「作成」ボタンをクリックします。
アプリケーション・タイプで「デスクトップ」を選択し、「次へ」をクリックします。
「名前」で、次のステップを実行します。
スキーマ: アプリケーションは、すべてのSQLを特定のデータベース・スキーマとして解析することで、権限を取得します。データベース・スキーマ所有者を指定します。
名前: 開発者がアプリケーションを識別するための名前を入力します。
アプリケーション: アプリケーションを識別する整数値を指定します。アプリケーションIDは、Application Expressインスタンス内で一意である必要があります。3000から9000の範囲のアプリケーションIDは、Oracle Application Expressの内部使用向けに予約されています。
テーマ: テーマを選択します。テーマは、アプリケーション全体のレイアウトおよびスタイルの定義に使用するテンプレートのコレクションです。「テーマの使用」を参照してください。
テーマ・スタイル: テーマ・スタイルを選択します。テーマ・スタイルは、テーマ42および51などの新しいアプリケーションに対してのみ使用可能です。「テーマ・スタイルの使用」を参照してください。
「次へ」をクリックします。
ヒント: ログイン・ページと空白ページのみを含むインスタント・アプリケーションを作成するには、「アプリケーションの作成」ボタンをクリックします。 |
次に、ページをアプリケーションに追加します。
「ページの追加」ボタンをクリックします。
「ページの追加」で、次のステップを実行します。
ページ・タイプの選択: 「マスター・ディテール」を選択します。
親ページ: 該当する場合、従属ページを選択します。属性の詳細は、フィールドレベル・ヘルプを参照してください。
マスター表名: マスター表として使用する表またはビューを選択します。この表は、レポート・ページ、およびマスター・ディテール・ページのマスター・フォームを作成するために使用されます。
ディテール表名: ディテール表として使用する表またはビューを選択します。
外部キーを使用して選択したマスター表に関連付けられている表およびビューのみが表示されます。
ページ・モード: ページ・モードを選択します。
「ページの追加」をクリックします。
ページ上部に新しいページが表示されます。
「次へ」をクリックします。
「共有コンポーネント」で、共有コンポーネントを別のアプリケーションからコピーするかどうかを指定します。「はい」または「いいえ」を選択します。「はい」を選択した場合は、そのコピー元と、インポートするコンポーネントを選択します。「共有コンポーネントの管理」を参照してください。
「属性」で、必要に応じて構成し、「次へ」をクリックします。
選択内容を確認して、「アプリケーションの作成」をクリックします。
ページの作成ウィザードでは、データベースに外部キー・リレーションシップが定義されていない2つの表からマスター・ディテールを作成できます。基礎となるデータベースで外部キーと適切に定義されたリレーションシップを使用することをお薦めしますが、開発者は必ずしも各自のデータベース・モデルを変更できるわけではありません。
ウィザードを使用して作成したマスター・ディテール・フォーム・ページ上のマスター・フォームには、ユーザーがマスター結果セット内で前後に移動するためのボタンが含まれています。ウィザードの実行中に、どの列でナビゲーションの順序を決定するかを選択します。また、2ページまたは3ページで構成されるマスター・ディテール・フォームを作成し、個別のページの単一レコード編集でレポートに表示される詳細レコードを含めることもできます。
ページの作成ウィザードを使用してマスター・ディテール・フォームを作成するには、次のステップを実行します。
「ワークスペース」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
「ページの作成」をクリックします。
「ページの作成」で、次のステップを実行します。
ユーザー・インタフェース: ページのユーザー・インタフェースを選択します。
ページ・タイプの選択: 「フォーム」を選択します。
「次へ」をクリックします。
「マスター・ディテール・フォーム」を選択して、「次へ」をクリックします。
マスター・ディテール・ウィザードが表示されます。
「マスター表と列」で、次のステップを実行します。
表/ビューの所有者: マスター表を所有するスキーマを選択します。
表/ビューの名前: マスター・ページに含める列を含む表またはビューを選択します。
そのオブジェクト内の列が表示されます。
列の選択: マスター・ページに表示する列を選択します。後で列を追加できます。
ユーザー・インタフェースのデフォルト値を使用: ユーザー・インタフェースのデフォルト値を使用するかどうかを選択します。詳細は、フィールドレベル・ヘルプおよび『Oracle Application Express SQLワークショップ・ガイド』のユーザー・インタフェースのデフォルト値の管理に関する項を参照してください。
「次へ」をクリックします。
「ディテール表と列」で、次のステップを実行します。
関連する表のみの表示: ディテール表のリストを、マスター表に関連する表のみに制限するかどうかを指定します。「はい」または「いいえ」を選択します。
表/ビューの所有者: 表またはビューの所有者を選択します。デフォルトで選択された表またはビューの所有者は、アプリケーションの所有者と同一です。アプリケーションの所有者が他のスキーマの表またはビューに対するSELECT権限を持っている場合、他のスキーマを選択できます。
表/ビューの名前: ディテール・ページに含める列を含む表またはビューを選択します。
そのオブジェクト内の列が表示されます。
列の選択: ディテール・ページに表示する列を選択します。後で列を追加できます。
「次へ」をクリックします。
次に、主キーを定義します。フォームでは、データベース内の表の行に対する挿入、更新および削除操作が実行されます。表に定義されている主キー、または表内の行を一意に識別するROWID擬似列のいずれかを使用して、行を識別します。
「主キーの定義」で、各表に対して次のいずれかを選択します。
データベースで管理(ROWID): ROWID擬似列を使用して、更新および削除する行を識別します。
主キー列の選択: ソース表の主キー列を使用します。
「データベースで管理(ROWID)」を選択した場合は、次のステップを実行します。
「次へ」をクリックします。
「マスター・オプション」で、マスター表とディテール表の関係を定義します。列名(表名で完全修飾された名前)を入力するか、またはリストから列名を選択できます。「次へ」をクリックします。
「次へ」をクリックします。
「主キー列の選択」を選択した場合は、次のようにします。
「主キーの定義」で、各表について次の項目を選択します。
主キー列1: 主キーの最初の列を選択します。
主キー列2: 複合主キーが含まれている場合は、この属性の2つ目の主キー列を指定します。この属性はオプションです。
「次へ」をクリックします。
「主キーのソース」で、主キーの移入方法を選択し、「次へ」をクリックします。
既存のトリガー: 挿入前トリガーによって主キーが移入される場合は、このオプションを選択します。このオプションは、フォームを完成させた後に主キー列ソースを指定する場合も選択できます。
カスタムPL/SQLファンクション: 戻りキー値を生成するPL/SQLファンクションを指定する場合はこのオプションを選択します。
既存の順序: 選択されているスキーマで使用可能な順序のリストから順序を選択する場合は、このオプションを選択します。
「マスター・オプション」で、マスター行のナビゲーションを含めるかどうかを指定して、「次へ」をクリックします。
マスター行のナビゲーションを含める場合は、ナビゲーション順の列を定義します。ナビゲーション順の列が定義されていないと、マスターの更新フォームは、主キー列を使用してナビゲートします。
「次へ」をクリックします。
「マスター・オプション」で、次のステップを実行します。
マスター行ナビゲーションを含めますか。 - マスター行ナビゲーションを使用すると、ユーザーはマスター更新フォームをナビゲートできます。マスター行ナビゲーションを含めるには、「はい」を選択します。
マスター行のナビゲーションの順序 - ナビゲーション順の列を選択します。列を選択しなかった場合、ナビゲーションはマスター表の主キーで順序付けされます。
セカンダリ・ナビゲーションの順序 - セカンダリ・ナビゲーション順の列を選択します。
マスター・レポートを含めますか。 - すでにレポート・ページがある場合は、マスター・レポート・ページを作成しないように選択できます。マスター・レポート・ページを含めるには、「はい」を選択します。
「次へ」をクリックします。
マスター・ディテールの構築で、マスター・ディテール・ページのレイアウトを選択し、「次へ」をクリックします。オプションは次のとおりです
同一ページで表形式フォームとしてディテールの編集 - 2ページのマスター・ディテールが作成されます。
別のページでディテールの編集 - 3ページのマスター・ディテールが作成されます。
「ページ属性」で、次のステップを実行します。
ページ属性: マスター・ページおよびディテール・ページ情報を確認および編集します。
ディテール・ページのディテール・リージョンのタイトル - ディテール・ページのタイトルを入力します。
ページ・グループ - このページと関連付けるページ・グループの名前を指定します。
ブレッドクラム: ページでブレッドクラム・ナビゲーション・コントロールを使用するかどうか、およびどのブレッドクラム・ナビゲーション・コントロールを使用するかを選択します。ブレッドクラム・エントリを作成するには、次のステップを実行します。
親エントリ: このブレッドクラム・エントリの親エントリを選択します。
エントリ名(マスター・レポート): マスター・レポート・ページのブレッドクラム・エントリの名前を指定します。
エントリ名(マスター・ディテール・ページ): マスター・ディテール・ページのブレッドクラム・エントリの名前を指定します。
親エントリ: このアイテムは、親エントリを選択している場合に表示されます。
「次へ」をクリックします。
「ナビゲーションのプリファレンス」で、このページに含めるナビゲーションのタイプを指定し、「次へ」をクリックします。ナビゲーション・オプション(ナビゲーション・メニューまたはタブなど)はカレント・アプリケーションのテーマに応じて決まります。
「作成」をクリックします。