プライマリ・コンテンツに移動

Oracle® Application Expressアプリケーション・ビルダー・ユーザーズ・ガイド リリース5.1 E83810-03 |
| 目次 | 索引

前 | 次 |

# 9.2.4 レガシー・コンポーネント・ビューでのフォームの手動作成

この項では、コンポーネント・ビューでフォームを手動で作成する方法について説明します。

トピック:

- コンポーネント・ビューでのフォームの手動作成について
- フォームの処理
- コンポーネント・ビューでのフォームの移入

関連項目:

レガシー・コンポーネント・ビューでのページの管理

## 9.2.4.1 コンポーネント・ビューでのフォームの手動作成について

次のステップを実行することによって、フォームを手動で作成することもできます。

- ステップ1 - (ページ・アイテムのコンテナとして機能する) HTMLリージョンを作成します

- ステップ2 - リージョンに表示するアイテムを作成します

- ステップ3 - プロセスおよびブランチを作成します

HTMLリージョンを作成することによって手動でフォームを作成するには、次のステップを実行します。

1. 適切なページにナビゲートします。レガシー・コンポーネント・ビューでのページの表示を参照してください。

2. HTMLリージョンを作成します。コンポーネント・ビューでのリージョンの作成を参照してください。

3. ページへのアイテムの追加を開始します。ページ・レベル・アイテムの理解

## 9.2.4.2 フォームの処理

フォームを作成したら、次に、基礎となるデータベース表またはビューに対して挿入または更新を行うことによって、ユーザーが入力したデータを処理します。この項では、フォームを処理する3つの方法について説明します。

トピック:

- 行の自動処理(DML)プロセスの作成
- 1つ以上の挿入文を含むプロセスの作成
- PL/SQL APIを使用したフォーム値の処理

### 9.2.4.2.1 行の自動処理(DML)プロセスの作成

フォームを実装するための一般的な方法の1つは、行の自動処理(DML)プロセスを手動で作成することです。この方法には、3つのメリットがあります。1つ目は、SQLコードを指定する必要がないことです。2つ目は、Oracle Application ExpressによってDMLプロセスが実行されることです。3つ目は、このプロセスによって、ロストした更新の検出が自動的に実行されることです。ロストした更新の検出によって、データに同時にアクセスできる複数のアプリケーションのデータの整合性が保証されます。

この方法を実現するには、次のステップを実行します。

- アイテムを追加し、「アイテム・ソース」タイプを「データベース列」に定義し、大/小文字が区別される列名を指定します。

- オプション「常にキャッシュ値より優先」を選択します。

行の自動処理(DML)プロセスを作成するには、次のステップを実行します。

1. 適切なページにナビゲートします。レガシー・コンポーネント・ビューでのページの表示を参照してください。

2. ページ・プロセスの作成ウィザードにアクセスします。「プロセス」で、「作成」アイコンをクリックします。

3. 「プロセス・タイプ」で、「データ操作」を選択し、「次へ」をクリックします。

4. プロセス・カテゴリ「行の自動処理(DML)」を選択し、「次へ」をクリックします。

5. 「プロセス属性」で、次のステップを実行します。

   1. 名前 - プロセスを識別するための名前を入力します。

   2. 順序 - 順序番号を指定します。

   3. ポイント - このプロセスの実行ポイントを選択します(「ロード時 - ヘッダーの後」など)。

   4. タイプ - 選択したプロセス・タイプを表示します。

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

6. 画面に表示されるステップに従います。

### 9.2.4.2.2 1つ以上の挿入文を含むプロセスの作成

この方法でフォームを処理するには、挿入、更新および削除操作を実行する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;

### 9.2.4.2.3 PL/SQL APIを使用したフォーム値の処理

アプリケーションによっては、表へのすべてのアクセスを単一または少数のPL/SQLパッケージにまとめて処理することが適しています。DML操作を処理するパッケージを作成した場合は、このパッケージのプロシージャおよびファンクションを、送信後のPL/SQLプロセスからコールして、リクエストの挿入、更新および削除を処理できます。

## 9.2.4.3 コンポーネント・ビューでのフォームの移入

Oracle Application Expressでは、ロード時またはApplication Expressエンジンによるページのレンダリング時にフォームが移入されます。フォームを移入するには、次のステップを実行します。

- プロセスを作成し、タイプを「行の自動フェッチ」に定義します。

- 非表示のセッション・ステート・アイテムを参照することによって、フォームを手動で移入します。

行の自動フェッチ・プロセスを作成するには、次のステップを実行します。

1. 適切なページにナビゲートします。レガシー・コンポーネント・ビューでのページの表示を参照してください。

2. ページ・プロセスの作成ウィザードにアクセスします。「プロセス」で、「作成」アイコンをクリックします。

3. 「プロセス・タイプ」で、「データ操作」を選択し、「次へ」をクリックします。

4. プロセス・カテゴリを選択し、「行の自動フェッチ」を選択して「次へ」をクリックします。

5. 「プロセス属性」で、次のステップを実行します。

   1. 名前 - プロセスを識別するための名前を入力します。

   2. 順序 - 順序番号を指定します。

   3. ポイント - このプロセスの実行ポイントを選択します。

   4. タイプ - 選択したプロセス・タイプを表示します。

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

6. 画面に表示されるステップに従います。

非表示のセッション・ステート・アイテムを参照することによって、フォームを手動で移入することもできます。たとえば、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`の値は、設定済です。

- このプロセスのプロセス・ポイントは、「ロード時 - リージョンの前」またはこれ以前に実行するように設定されます。