同じページにフォームと対話グリッドのリージョンがある場合、どちらが先に処理されるのか、と質問がありました。プロセスの行の自動処理(DML)の登録順だろうと思ったのですが、確認してみました。その作業ログです。ページ作成ウィザードを使用しないフォームと対話グリッドのリージョンの作成方法の紹介にもなっています。
以下のクイックSQLのモデルにて、表TST_INSERT_ORDERを作成します。
# prefix: tst
# semantics: default
insert_order
name vc80
モデルには含まれていませんが、主キーとして列IDが作成され、一意となる数値が自動採番されます。そのため、IDを確認することにより、行が挿入された順番が分かります。
表を作成した後、空のアプリケーションを作成します。今回は名前をInsert Order確認としました。ホーム・ページを開いて、フォームと対話グリッドのリージョンを追加します。
新規にタイプがフォームとなるリージョンを追加します。タイトルはフォームとしています。ソースの表名としてTST_INSERT_ORDERを設定します。
表名が設定されると、列が認識されます。認識された列の中から列IDに対応するページ・アイテムP1_IDを選択し、タイプを非表示、主キーをONに変更します。
フォーム・リージョンのAttributesを開き、編集を有効にします(ONにします)。
行を作成するボタンを作成します。フォーム・リージョンを手動で作成した場合、ページ作成ウィザードによる作成とは異なり、作成、変更の登録、削除、キャンセルといったボタンは作成されません(これらのボタンは、フォーム・リージョンというコンポーネントの一部ではありません)。
フォーム・リージョンにボタンを作成します。ボタン名はB_CREATE、ラベルを生成としています。動作のアクションはページの送信(つまりHTTPのPOSTが発行されます)、データベース・アクションはSQL INSERT操作を選びます。
データベース・アクションの指定は重要で、フォーム・リージョンに対応する行の自動更新(DML)プロセスは、このデータベース・アクションの指定に従ってデータベースの表操作を行います。
続いて、対話グリッドのリージョンを追加します。新規に名前を対話グリッドとしたリージョンを追加し、タイプを対話グリッド、表名にTST_INSERT_ORDERを設定します。
表名が設定されると、列が認識されます。認識された列の中から列IDを選択し、タイプを表示のみ、主キーをONに変更します。主キー列は通常は非表示にしますが、今回は挿入の順番を確認するため、列として表示させます。
対話グリッドのリージョンのAttributesを開き、編集を有効にします(ONにします)。
以上でアプリケーションの作成は完了です。プロセス・ビューを開いて、登録されている行の自動処理(DML)の順番を確認します。
アプリケーションを実行して、何行かデータを挿入してみます。
フォームのNameにform 1、対話グリッドにgrid 1、grid 2の2行を設定し、作成をクリックします。