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

前
次

24.4 レガシー表形式フォームの管理

注意:

表形式フォームは、レガシー・アプリケーション・コンポーネントです。引き続きサポートされますが、開発者はかわりに対話グリッドを使用することをお薦めします。

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

トピック:

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

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

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

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

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

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

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

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

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

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

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

ヒント:

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

関連項目:

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

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

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

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

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

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

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

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

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

24.4.4 レガシー表形式フォームの作成

ページの作成ウィザードを使用して、既存のアプリケーションに表形式フォームを追加します。表形式フォームの基となる表の名前を指定すると、その表の列がデータベース・データ・ディクショナリから読み取られます。表に定義されている主キー、または表内の行を一意に識別するROWID擬似列のいずれかを指定できます。主キーを選択する場合は、3種類の主キーのソース・タイプ(トリガー、PL/SQLファンクションおよび順序)の中から選択できます。

ヒント:

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

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

注意:

レガシー表形式フォームは、レガシー・アプリケーション・コンポーネントです。レガシー・コンポーネントは引き続きOracleでサポートされますが、かわりに対話グリッドを作成することをお薦めします。

  1. ワークスペースのホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
  2. アプリケーションを選択します。
  3. 「ページの作成」をクリックします。
  4. 「ページの作成」で、次のステップを実行します。
    1. ユーザー・インタフェース: ページのユーザー・インタフェースを選択します。
    2. 「レガシー・ページ」を選択します。
    3. 「次へ」をクリックします。
  5. 「表形式フォーム」を選択して、「次へ」をクリックします。

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

  6. 「ページ属性」で、次のステップを実行します。
    1. 実装: レポート実装タイプを選択します。
    2. レポート・ページ番号: 新しいページ番号を指定した場合、ウィザードによって新しいページが作成されます。既存のページ番号を指定した場合、ウィザードによってそのページにコンポーネントが追加されます。
    3. レポート・ページ名: レポートを含むページのタイトルを入力します。
    4. フォーム・ページ・モード: ページ・モードを指定します。詳細は、フィールドレベル・ヘルプを参照してください。
    5. ブレッドクラム: ページでブレッドクラム・ナビゲーション・コントロールを使用するかどうか、およびどのブレッドクラム・ナビゲーション・コントロールを使用するかを選択します。
    6. 「次へ」をクリックします。
  7. ナビゲーション・メニューで、このページをどのようにナビゲーション・メニューに統合するかを選択して、「次へ」をクリックします。詳細は、フィールドレベル・ヘルプを参照してください。
  8. 「データ・ソース」は、次のようにします。
    1. 表/ビューの所有者: 表形式フォームのベースにする表またはビューの所有者を選択します。
    2. 表/ビューの名前: 表形式フォーム・リージョンに含める列を含む表またはビューを選択します。
    3. レポートに表示される列の選択: 表形式フォームに含める1つ以上の列を選択します。その後のページで、どの列を更新可能にするかを定義します。
    4. 「次へ」をクリックします。

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

  9. 「フォーム・ページ」で、主キーについて次のいずれかを選択します。
    • データベースで管理(ROWID): 表形式フォームは、ROWID擬似列を使用して、更新および削除する行を識別します。

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

  10. 「データベースで管理(ROWID)」を選択した場合は、「次へ」をクリックして続行します。
  11. 「主キー列の選択」を選択した場合は、次のようにします。
    1. 主キー列1: 主キーの最初の列を選択します。
    2. 主キー列2: 複合主キーが含まれている場合は、この属性の2つ目の主キー列を指定します。この属性はオプションです。
    3. 「主キー列1のソース」で、主キーの移入方法を選択します。
      • 既存のトリガー: 挿入前トリガーによって主キーが移入される場合は、このオプションを選択します。このオプションは、フォームを完成させた後に主キー列ソースを指定する場合も選択できます。

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

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

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

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

  1. ワークスペースのホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
  2. アプリケーションを選択します。
  3. 表形式フォームを含むページを選択します。
  4. コンポーネント・ビューでページを表示します。
  5. レポート属性ページにアクセスするには、表形式フォーム・リージョンの横にある「レポート」リンクをクリックします。
  6. 「タスク」から、「列の順序とリージョン・ソースの同期化」を選択します。
  7. 「同期化」をクリックします。