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

前
次

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

ページの作成ウィザードを実行し、「レガシー・ページ」→「表形式フォーム」を選択して、レガシー表形式フォームを作成します。

注意:

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

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

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

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

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

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

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

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

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

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

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

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

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

ヒント:

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

関連項目:

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

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

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

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

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

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

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

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

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

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

ページの作成ウィザードを使用して、新しいページでレガシー表形式フォームを追加します。表形式フォームの基となる表の名前を指定すると、その表の列がデータベース・データ・ディクショナリから読み取られます。表形式の作成時には、汎用列テンプレートを使用し、列レポート・テンプレートは使用しないことをお薦めします。

注意:

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

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

  1. ワークスペースのホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
  2. アプリケーションを選択します。
  3. 「ページの作成」をクリックします。
  4. 「ページの作成」で、次のステップを実行します。
    1. ユーザー・インタフェース: ページのユーザー・インタフェースを選択します(オプション)。
      この属性は、古いテーマを使用し、デスクトップおよびモバイル・ユーザー・インタフェースが定義されているアプリケーションに対してのみ表示されます。
    2. ページ・タイプ: 「レガシー・ページ」「表形式フォーム」を選択します。

      ヒント:

      コンポーネント・ページは、ページ・レベルの機能を提供し、指定されたアプリケーション内でレポート、フォーム、チャート、カレンダなどを複数回追加できます。機能ページは、アプリケーション・レベルの機能を提供し、アプリケーションごとに1回のみ追加できます。

  5. 「ページ属性」で、次のステップを実行します。
    1. ページ番号: 新しいページ番号を指定した場合、ウィザードによって新しいページが作成されます。既存のページ番号を指定した場合、ウィザードによってそのページにコンポーネントが追加されます。
    2. ページ名: ページの名前を指定します。
    3. ページ・モード - ページ・モードを指定します。オプションは次のとおりです。
      • 標準 - ページは標準のApplication Expressアプリケーション・ページとして表示されます。

      • モーダル・ダイアログ - ページはモーダル・ダイアログとして表示されます。モーダル・ダイアログは、ビューポート内に配置されたオーバーレイ・ウィンドウで、エンド・ユーザーが終了する(閉じる)までアクティブでフォーカスされたままです。基になるページはグレーアウトされ、ダイアログを閉じるまで、エンド・ユーザーは残りのページと対話できません。

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