一.概要
1.問題の説明
書き込みテンプレートのデータ量が非常に大きいが、変更する必要がなく、そのまま書き込めば済む場合があります。
一般の方式で書き込む場合、書き込みボタンをクリックする前にまずページプレビューをしなければなりません。データ量が大きいと、ページプレビューが非常に遅くなり、動かなくなることがあります。
本マニュアルでは、プレビューせずにバックグラウンドでデータベースに直接書き込む方法について紹介します。
2.実現の方向性
書き込みテンプレートにアクセスする時、urlの後ろに&format=submitというパラメータを付け加えると、帳票がデフォルトでクエリしたデータをデータベースに直接書き込むことができます。
注:バックグラウンドで書き込む場合、設定済みのチェックとページイベントは無効となります。
二.例示
1.データベーステーブルを準備
先ず、FRDemoでデーベーステーブルOrders_copyを新規作成します。
ここでは、OrdersからOrders_copyへコピーします。書き込み先のデータベーステーブルとして、Orders_copyを空白のままにします。下の図に示すように、Orders_copyのテーブル構造は、Ordersと同じです。
2.書き込みテンプレートをデザイン
1.一般帳票を新規作成し、データベースのクエリデータセットds1を新規作成します。SQL文:SELECT * FROM Orders
2.書き込みテーブルをデザインします。A2~E2セルにテキストウィジェットを追加し、データセットのフィールドを対応するセルにドラッグします。これで下の図に示すように、フロントエンドでプレビューする時、クエリの結果を確認できるようになります。
3.ビルトインSQL書き込みを新規作成し、データベースはOrders_copyを選択します。そして次の図に示すように、A2~M2セルとOrders_copyのフィールドを関連付けます。
3.効果プレビュー
3.1.標準方式
下の図から分かるように、クエリ結果が出てきてからデータベースに書き込むため、待つ時間が非常に長く、効率は比較的に低いです。
3.2.バックグラウンド書き込み方式
ウェブページに http://localhost:8075/webroot/decision/view/report?viewlet=直接書き込み.cpt&op=write&format=submitを入力するとページプレビューの段階をスキップしてデータベースに直接書き込むことができます。標準方式に比べ、スピードがだいぶ速くなります。