25.4 レガシー表形式フォームの管理
レガシー表形式フォームを使用すると、1つのページから表内の複数の行を一度に更新できます。
ノート:
表形式フォームは、レガシー・アプリケーション・コンポーネントです。既存のレガシー表形式フォームはサポートされていますが、新しいレガシー表形式フォームの作成はサポートされなくなりました。開発者はかわりに対話グリッドを作成することをお薦めします。
レガシー表形式フォームを使用すると、1つのページから表内の複数の行を一度に更新できます。レガシー表形式フォームでは、データベース表内の複数の行に対して更新、挿入および削除操作を実行できます。表形式フォームには、バックグラウンドでコミット時ロックを実行してデータの整合性を維持する組込みの複数行更新プロセスが備わっています。
親トピック: アプリケーション・レガシー・コンポーネントの管理
25.4.1 表形式フォームを管理する場合のベスト・プラクティス
表形式フォームを管理するときには、次のベスト・プラクティスを実施することをお薦めします。
-
既存のレガシー表形式フォームのSQL文の選択リストは、変更しないでください。問合せを変更する必要がある場合は、更新可能な列の値が、Oracle APEXエンジンによってデータベースから問い合せられた後に変更されていないことを確認してください。
-
表示タイプ固有のJavaScriptロジックを使用する表示タイプにカスタムJavaScriptを追加しないでください(ラジオ・グループ、単純なチェック・ボックス、ポップアップ・キーLOVなど)。
親トピック: レガシー表形式フォームの管理
25.4.2 レガシー表形式フォームの仕組み
表形式フォームは、基礎となる表の列に問合せ列が関連付けられているSQL問合せに基づきます。単一レコードとは異なり、表形式フォームではデータはセッション・ステートに格納されません。表形式フォーム・ページが送信されると、表形式フォームのデータは組込みのデータ操作言語(DML)またはカスタムPL/SQLページ・プロセスを使用して処理されます。
自動DMLを備えた表形式フォームでは、複数行操作に対して次の2つのプロセスが使用されます。
-
複数行の更新(MRU)プロセスでは、作成操作と更新操作を実行します。
-
複数行の削除(MRD)プロセスでは、1つ以上の行に対するリクエストを削除します。
MRUプロセスとMRDプロセスでは、基礎となる表名と主キー列を参照します。DMLプロセスで正しいレコードを識別できるようにするには、主キー列を表形式フォームのSQL問合せに含め、レポート列を非表示にするか、表示専用(ステートを保存)にする必要があります。新しいレコードの場合、主キー値をNULL
にして、新しいレコードとして識別されるようにする必要があります。削除操作は、削除対象の行の行番号を参照することによって実行されます。ユーザーが、カレント・ページ上の1つ以上の行をチェックし、「削除」ボタンをクリックすると、行番号によって対応する主キー値が識別され、一致する行が削除されます。
ウィザードによって生成される表形式フォームの組込みDMLには、更新の喪失を回避するためのチェックサム列が含まれています。コミット時ロックと呼ばれる方法を使用すると、表形式フォームのレンダリング時に各行のチェックサムが計算されます。このチェックサムは、表形式フォームの特別な非表示列に格納されます。更新のためにフォームを送信すると、データベースに格納されている現在のデータで追加のチェックサム・セットが計算されます。表形式フォームの初回レンダリング時に構築されたチェックサムと新しいチェックサムが比較され、不一致が見つかった場合、更新は拒否されます。これは、表形式フォームがレンダリングされてからデータが送信されるまでの間に、データベース内のデータが別のユーザーまたは別のプロセスによって変更されたためです。
親トピック: レガシー表形式フォームの管理
25.4.3 レガシー表形式フォームの実行について
表形式フォームを実行すると、データは更新可能な列を含むレポートとしてレンダリングされます。これらの列は、様々なフォーム要素(テキスト・フィールド、テキスト領域、日付ピッカー、選択リスト、ラジオ・グループなど)を使用して示されます。
数値フィールドおよび日付フィールドについては、日付と数値の書式マスクを事前に定義したり、初期フォームの生成後にそれらの書式マスクを適用することもできます。
各レポートには、(行セレクタと呼ばれる)チェック・ボックス列も含まれています。ユーザーは、この行セレクタを使用して1つ以上の列を選択し、データを更新または削除します。行を追加するには、「行の追加」をクリックします。
ヒント:
列属性を編集して、特定の列の外観を制御できます。
関連項目:
『Oracle APEX SQLワークショップ・ガイド』のユーザー・インタフェースのデフォルト値の管理
親トピック: レガシー表形式フォームの管理