プライマリ・コンテンツに移動
Oracle® Application Expressアプリケーション・ビルダー・ユーザーズ・ガイド
リリース5.0
E64891-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

11.2 表形式フォームの管理

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

11.2.1 表形式フォームの作成について

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

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

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

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

表形式フォームを作成する場合のベスト・プラクティス

表形式フォームを作成するときには、次のベスト・プラクティスを実施することをお薦めします。

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

  • 表示タイプ特有のJavaScriptロジックを使用する表示タイプにカスタムJavaScriptを追加しないでください(ラジオ・グループ、単純なチェック・ボックス、ポップアップ・キーLOVなど)。

11.2.2 表形式フォームの実行について

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

rpt_tabular_form.pngの説明が続きます
図rpt_tabular_form.pngの説明

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


関連項目:

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

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

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


ヒント:

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

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

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

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

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

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

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

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

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

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

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


ヒント:

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

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

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

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

  3. アプリケーション・タイプで「デスクトップ」を選択し、「次へ」をクリックします。

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

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

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

    3. アプリケーション: アプリケーションを識別する整数値を指定します。アプリケーションIDは、Application Expressインスタンス内で一意である必要があります。3000から9000の範囲のアプリケーションIDは、Oracle Application Expressの内部使用向けに予約されています。

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

    5. テーマ・スタイル: テーマ・スタイルを選択します。テーマ・スタイルは、テーマ42および51などの新しいアプリケーションに対してのみ使用可能です。「テーマ・スタイルの使用」を参照してください。

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


    ヒント:

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

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

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

    「アプリケーションの作成 - ページの追加」ダイアログで、次のステップを実行します。

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

    2. 親ページ: 該当する場合、従属ページを選択します。属性の詳細は、フィールドレベル・ヘルプを参照してください。

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

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

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

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

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

  7. 「属性」で、必要に応じて構成し、「次へ」をクリックします。


    ヒント:

    属性の詳細は、フィールドレベル・ヘルプを参照してください。「フィールドレベル・ヘルプの表示」を参照してください。

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


関連項目:

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

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

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

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


ヒント:

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

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

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

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

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

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

    1. ユーザー・インタフェース: ページのユーザー・インタフェースを選択します。

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

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

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

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

  12. 「ナビゲーション・メニュー」で、このページに含めるナビゲーションのタイプを指定し、「次へ」をクリックします。ナビゲーション・オプション(ナビゲーション・メニューまたはタブなど)はカレント・アプリケーションのテーマに応じて決まります。

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

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

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

    3. 変更の適用ボタン・ラベル: 「変更の適用」ボタンに表示されるテキストを入力します。

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

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

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

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

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

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

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

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

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

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

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

  4. コンポーネント・ビューでページを表示します。「コンポーネント・ビューでのページの表示」を参照してください。

  5. レポート属性ページにアクセスするには、表形式フォーム・リージョンの横にある「レポート」リンクをクリックします。

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

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