この項では、フォームを手動で作成する方法について説明します。
次のステップを実行することによって、フォームを手動で作成することもできます。
ステップ1 - (ページ・アイテムのコンテナとして機能する) HTMLリージョンを作成します
ステップ2 - リージョンに表示するアイテムを作成します
ステップ3 - プロセスおよびブランチを作成します
HTMLリージョンを作成することによって手動でフォームを作成するには、次のステップを実行します。
適切なページにナビゲートします。「コンポーネント・ビューでのページの表示」を参照してください。
HTMLリージョンを作成します。「コンポーネント・ビューでのリージョンの作成」を参照してください。
ページへのアイテムの追加を開始します。「ページ・レベル・アイテムの理解」を参照してください。
フォームを作成したら、次に、基礎となるデータベース表またはビューに対して挿入または更新を行うことによって、ユーザーが入力したデータを処理します。この項では、フォームを処理する3つの方法について説明します。
フォームを実装するための一般的な方法の1つは、行の自動処理(DML)プロセスを手動で作成することです。この方法には、3つのメリットがあります。1つ目は、SQLコードを指定する必要がないことです。2つ目は、Oracle Application ExpressによってDMLプロセスが実行されることです。3つ目は、このプロセスによって、ロストした更新の検出が自動的に実行されることです。ロストした更新の検出によって、データに同時にアクセスできる複数のアプリケーションのデータの整合性が保証されます。
この方法を実現するには、次のステップを実行します。
アイテムを追加し、「アイテム・ソース」タイプを「データベース列」に定義し、大/小文字が区別される列名を指定します。
オプション「常にキャッシュ値より優先」を選択します。
行の自動処理(DML)プロセスを作成するには、次のステップを実行します。
適切なページにナビゲートします。「コンポーネント・ビューでのページの表示」を参照してください
ページ・プロセスの作成ウィザードにアクセスします。「プロセス」で、「作成」アイコンをクリックします。
「プロセス・タイプ」で、「データ操作」を選択し、「次へ」をクリックします。
プロセス・カテゴリ「行の自動処理(DML)」を選択し、「次へ」をクリックします。
「プロセス属性」で、次のステップを実行します。
名前 - プロセスを識別するための名前を入力します。
順序 - 順序番号を指定します。
ポイント - このプロセスの実行ポイントを選択します(「ロード時 - ヘッダーの後」など)。
タイプ - 選択したプロセス・タイプを表示します。
「次へ」をクリックします。
画面に表示されるステップに従います。
この方法でフォームを処理するには、挿入、更新および削除操作を実行する1つ以上のプロセスを作成します。Application Expressエンジンですべての操作を透過的に実行するかわりに、操作の制御はユーザーが行います。
たとえば、3つのアイテムを持つフォームが存在すると想定します。
P1_ID
: 表に現在表示されている行の主キーを格納するための非表示アイテム。
P1_FIRST_NAME
: ユーザー入力用のテキスト・フィールド。
P1_LAST_NAME
: ユーザー入力用のテキスト・フィールド。
また、「挿入」、「更新」および「削除」というラベルの3つのボタンがあるとします。さらに、3つの列id
、first_name
およびlast_name
を含む表Tがあるとします。この表には、値を指定しなかった場合に自動的にID
列が移入されるトリガーがあります。
新しい行の挿入を処理するには、ユーザーが「挿入」ボタンをクリックしたときに実行されるPL/SQLの条件付きプロセスを作成します。次に例を示します。
BEGIN INSERT INTO T ( first_name, last_name ) VALUES (:P1_FIRST_NAME, :P1_LAST_NAME); END;
行の更新を処理するには、PL/SQLの条件付きプロセスをもう1つ作成します。次に例を示します。
BEGIN UPDATE T SET first_name = :P1_FIRST_NAME, last_name = :P1_LAST_NAME WHERE ID = :P1_ID; END;
行の削除を処理するには、ユーザーが「削除」ボタンをクリックしたときに実行される条件付きプロセスを作成します。次に例を示します。
BEGIN DELETE FROM T WHERE ID = :P1_ID; END;
アプリケーションによっては、表へのすべてのアクセスを単一または少数のPL/SQLパッケージにまとめて処理することが適しています。DML操作を処理するパッケージを作成した場合は、このパッケージのプロシージャおよびファンクションを、送信後のPL/SQLプロセスからコールして、リクエストの挿入、更新および削除を処理できます。
Oracle Application Expressでは、ロード時またはApplication Expressエンジンによるページのレンダリング時にフォームが移入されます。フォームを移入するには、次のステップを実行します。
プロセスを作成し、タイプを「行の自動フェッチ」に定義します。
非表示のセッション・ステート・アイテムを参照することによって、フォームを手動で移入します。
行の自動フェッチ・プロセスを作成するには、次のステップを実行します。
適切なページにナビゲートします。「コンポーネント・ビューでのページの表示」を参照してください。
ページ・プロセスの作成ウィザードにアクセスします。「プロセス」で、「作成」アイコンをクリックします。
「プロセス・タイプ」で、「データ操作」を選択し、「次へ」をクリックします。
プロセス・カテゴリを選択し、「行の自動フェッチ」を選択して「次へ」をクリックします。
「プロセス属性」で、次のステップを実行します。
名前 - プロセスを識別するための名前を入力します。
順序 - 順序番号を指定します。
ポイント - このプロセスの実行ポイントを選択します。
タイプ - 選択したプロセス・タイプを表示します。
「次へ」をクリックします。
画面に表示されるステップに従います。
非表示のセッション・ステート・アイテムを参照することによって、フォームを手動で移入することもできます。たとえば、PL/SQLタイプのOracle Application Expressプロセスの次のコードでは、ename
およびsal
の値が設定されます。この例では、P2_ID
という名前の非表示のセッション・ステートを参照することによってフォームを手動で移入する方法も示します。
FOR C1 in (SELECT ename, sal FROM emp WHERE ID=:P2_ID) LOOP :P2_ENAME := C1.ename; :P2_SAL := C1.sal; END LOOP;
この例の説明は、次のとおりです。
C1
は、暗黙カーソルです。
P2_ID
の値は、設定済です。
このプロセスのプロセス・ポイントは、「ロード時 - リージョンの前」またはこれ以前に実行するように設定されます。