一.概要
1.問題の説明
実際の書き込み帳票の設計では、親テーブル・子テーブルは一般的な書き込みシーンであり、親テーブル内の1つの記録が子テーブル内の複数の記録に対応しています。例えば、「订单表」と「订单明细表」のように、「订单表」の1つの注文が「订单明细表」内の複数の製品データに対応し、「订单 ID」フィールドを介して関連付けられています。
このように、データが複数のデータソースから取得され、書き込み時にデータが複数のテーブルに入力される帳票のことを、マルチソース書き込み帳票とも呼ばれています。
2.実現の方向性
最初にフィルタ条件を設定してテーブルとテーブルを関連付け、次に複数のビルトインSQL書き込みを定義してデータを異なるデータテーブルに入力します。
二.例
1.データの準備
一般帳票と2つのデータベースクエリを新規作成します。SQLクエリ文はそれぞれは次のとおりです。
ds1:SELECT * FROM 订单
ds2:SELECT * FROM 订单明细
2.帳票設計
2.1.テーブルスタイルの設計
次の図のようにテーブルのスタイルを設定し、対応するデータ列を対応するセルにドラッグします。

B4、B6とB8セルの左親セルをA3セルに設定し、残りのセルをデフォルトに設定します。つまり、データは「订单 ID」を展開したものに基づいて取得されます。
2.2.セルの設定
1.次のように、各セルにそれぞれのウィジェットを追加します。
セル | ウィジェットタイプ |
B4、D4、F4、B8、A12 | プルダウンボックスウィジェット |
B6、D8、B12~E12 | 数字ウィジェット |
D6、F6 | テキストウィジェット |
F8 | チェックボックスウィジェット |
F12、G12 | ボタンウィジェット |
2.次のテーブルのように詳しく設定します。まず、B4、D4、F4、B8とA12セルの「プルダウンボックスウィジェット」の「データ辞書」について設定します。次に、B4、D4、F4とA12セルの セル属性-形態 も「データ辞書」に設定します。
セル | データベーステーブル | 実際値 | 表示値 |
B4 | 客户 | 客户ID | 公司名称 |
D4 | 雇员 | 雇员ID | 姓名 |
F4 | 运货商 | 运货商ID | 公司名称 |
B8 | 订单 | 货主城市 | 货主城市 |
A12 | 产品 | 产品ID | 产品名称 |
ウィジェットの「データ辞書」の設定は次の図のとおりです。

セル形態の「データ辞書」は、次の図のように設定します。

3.下図のように、F12とG12の「ボタンウィジェット」をそれぞれ「行の挿入」ボタンと「行の削除」ボタンに設定します。いずれもA12セルを指定します。

2.3.数式の挿入
H12セルに数式C12 * D12 * (1 - E12)を挿入します。即ち:数量*进价*(1-折扣)。
D8セルに数式round(sum(H12) + B6,2)を挿入します。「应付金额」は数量*进价*(1-折扣)+运货费ということを示します。
注:round() は支払金額が2桁の小数を保留することを意味します。同関数に関する詳細説明はRound函数をご参照ください。
2.4. 行の挿入方式
H12セルを選択し、右側のパネルの セル属性-その他 をクリックし、插入行策略を「元の値」に設定し、行を挿入する時にセルの数式が保持されるように確保します。

3.パラメータを設定
1.下図のように、メニューバーで テンプレート-テンプレートパラメータ をクリックし、IDという名前のテンプレートパラメータを追加します。デフォルト値は10001です。

2.パラメータパネルでパラメータを追加してウイジェットを生成し、ウイジェットタイプを「プルダウンボックスウイジェット」に選択します。さらに、下図のように、プルダウンボックスウイジェットのデータ辞書について詳しく設定します。つまり、データベーステーブルは「订单」、実際値と表示値はいずれも一列目: 订单 ID。

4.フィルタ条件の設定
A3セルをダブルクリックし、フィルタ条件を一般条件にし、「订单 ID」列がパラメータ$IDと等しい、というふうに設定します。次の図のようになります。

A12セルをダブルクリックし、フィルタ条件を一般条件にし、「订单 ID」列がA3セルと等しい、というふうに設定します。

5.行と列を非表示に設定
1.フィルタリングデータとして使われるA3セルはページ上表示されなくてもよいため、非表示にする必要があります。次の図に示すように、3行目の行番号を直接選択し、右クリックして「非表示」を選ぶことができます。

また、次の図に示すように、行の高さが0という条件属性をA3セルに追加する、という方法もあります。

2.同様に、H列をクリックし、また右クリックして「非表示」を選択し、H12セルを非表示にします。
6.帳票の書き込み属性の設定
メニューバーで テンプレート-帳票書き込み属性 という順でクリックし、次の図に示すように、帳票に2つの内置 SQL 提交を追加します。
ビルトイン SQL1:
ビルトインSQL2:
7.効果プレビュー
帳票を保存し、「書き込みプレビュー」をクリックし、「订单编号」が10001であるデータを絞り込むと、効果は次の図のようになります。

子テーブルのデータを変更します。「数量」と「进价」のデータを変更し、「書き込み」をクリックすると、書き込み成功が表示されます。ブラウザを更新してまた10001を選択すると、次の図のようにデータが確実に変更されたことがわかります。

三.注意事項
1.ビルトインSQLの実行手順
書き込みテンプレートに複数のビルトインSQLが定義されている場合、その実行順序は定義された順序で実行されます。ビルトインSQLの1つは実行中にエラーが発生すると、次のビルトインSQLの実行が停止され、実行済みのビルトインSQLがロールバックされます。ロールバックに関する詳細情報は 报表填报属性をご参照ください。