親子帳票の書き込み

  • 作成者:ayuan0625
  • 編集回数:20次
  • 最終更新:FRInternational 于 2021-12-28
  • 一.概要

    1.問題の説明

    実際の書き込み帳票の設計では、親テーブル・子テーブルは一般的な書き込みシーンであり、親テーブル内の1つの記録が子テーブル内の複数の記録に対応しています。例えば、「订单表」と「订单明细表」のように、「订单表」の1つの注文が「订单明细表」内の複数の製品データに対応し、「订单 ID」フィールドを介して関連付けられています。

    このように、データが複数のデータソースから取得され、書き込み時にデータが複数のテーブルに入力される帳票のことを、マルチソース書き込み帳票とも呼ばれています。

    2.実現の方向性

    最初にフィルタ条件を設定してテーブルとテーブルを関連付け、次に複数のビルトインSQL書き込みを定義してデータを異なるデータテーブルに入力します。

    二.例

    1.データの準備

    一般帳票と2つのデータベースクエリを新規作成します。SQLクエリ文はそれぞれは次のとおりです。

    ds1:SELECT * FROM 订单

    ds2:SELECT * FROM 订单明细

    2.帳票設計

    2.1.テーブルスタイルの設計

    次の図のようにテーブルのスタイルを設定し、対応するデータ列を対応するセルにドラッグします。

     

    B4B6B8セルの左親セルA3セルに設定し、残りのセルをデフォルトに設定します。つまり、データは「订单 ID」を展開したものに基づいて取得されます。

    2.2.セルの設定

    1.次のように、各セルにそれぞれのウィジェットを追加します。

    セル

    ウィジェットタイプ

    B4D4F4B8A12

    プルダウンボックスウィジェット

    B6D8B12~E12

    数字ウィジェット

    D6F6

    テキストウィジェット

    F8

    チェックボックスウィジェット

    F12G12

    ボタンウィジェット

    2.次のテーブルのように詳しく設定します。まず、B4D4F4B8A12セルの「プルダウンボックスウィジェット」の「データ辞書」について設定します。次に、B4D4F4A12セルの セル属性形態 も「データ辞書」に設定します。

    セル  

    データベーステーブル 

    実際値  

      表示値

    B4

    客户

    客户ID

    公司名称

    D4

    雇员

    雇员ID

    姓名

    F4

    运货商

    运货商ID

    公司名称

    B8

    订单

    货主城市

    货主城市

    A12

    产品

    产品ID

    产品名称

    ウィジェットの「データ辞書」の設定は次の図のとおりです。

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


    3.下図のように、F12G12の「ボタンウィジェット」をそれぞれ「行の挿入」ボタンと「行の削除」ボタンに設定します。いずれも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がロールバックされます。ロールバックに関する詳細情報は 报表填报属性をご参照ください。


    Attachment List


    Theme: FineReport データ書き込み
    • いいね
    • 良くない
    • 閲覧しただけ