一.概要
帳票のデータ取得が完了してから、デザイナーがデータベースから戻ったデータの展開、グループ分け、一覧、集計など計算を実施します。適切なテンプレートは帳票の計算時間を大幅に短縮できます。
二.ソリューション
1.空白セルの活用
帳票の中で、属性を含むセルであればメモリ占有するが、空白セルはほとんどメモリを占有しません。レイアウトの必要に応じて、属性がなく、様式を整えるだけがためのセルの使用は不可避です。これらのセルをできるだけ空白セルに設置することで、メモリの占有を効果的に削減し、帳票の計算も加速できます。
2.行・列の非表示は慎重に
帳票では、複雑な計算を行う場合、非表示行・列で中間までの計算を行うことが多いです。そこで使用されるセルは一つや二つだけですが、隠されたほかの内容のあるセルが無駄にメモリを占有してしまいます。したがって、使えないセルを空白に設定することで、メモリ占有を減少し、帳票の計算を加速したほうがいいです。
3.セル結合の使用は慎重に
帳票では結合セルがよく使われていますが、その結合セルの全ての属性は左上のセルのみに保存されています。結合されたほかのセルでは属性が保存されず、メモリも占有しません。
結合セルの使用でメモリ占有が減少しますが、セルを結合する計算は複数のセルのアクティブ・ポジティブ関係にかかわるため、複雑な計算になって時間もかかってしまいます。したがって、セルの結合は慎重にし、使用しないセルを空白に設定しましょう。
4.同じ効果の条件属性を絞る
同じ行(列)のセルで同一効果の条件属性を設定する際、その行(列)の中のどれか一つのセルで条件属性を設定すると、帳票の計算を加速できます。下記の図のように、行を隠す時もすべてのセルではなく、一つのセルの条件属性を設定するだけでいいです。
5.同じ効果のデータ列の基本属性の設定
帳票作成において、データが集中するフィールドをセルにドラッグする際、データ列-基本-データ設定(グループ分け、一覧、集計)の中で最も計算が速いのは一覧です。明細表の設定には二つの方法がありますが、結果は同じです。
設定方法一:注文ID列のデータを一覧に設定し、それとともに展開するデータ列は既定設定を取ります(すなわち一般に使用されるグループ分け)。
設定方法二:注文ID列のデータを一覧に設定し、それとともに展開するデータ列も一覧に変更します。
上記の二種類のデザインは同じデータを表示しますが、帳票の計算速度が違います。方法二のほうが明らかに一より速いです。
それはデータ列をグループ分けに設定した後、帳票は取り出したデータに重複があるか否かを問わず、グルーピング集計の計算を実行するからです。したがって、同じ効果の場合、優先的にデータ列の属性を一覧に設定すべきです。
6.親セル設定
FineReportの帳票デザインにおいて最も重要なのはデータ列の展開です。その際、どのセルにフォローするか、注意する必要があります。そのため、親セルの設定が重要です。不適切な親セルの設定が帳票の計算速度を大きく影響し、さらに不正確の結果をもたらします。また、親セルと子セルのレベルツリーも帳票の性能を影響するので、できるだけレベルツリーを短く調整したほうが望ましいです。下記のテンプレートを例にします。
備考:すべてのセルのデータ表示方法を一覧表示に設定します。
設定方法一:氏名の親セルを雇員ID、性別の親セルを氏名、生年月日の親セルを性別、学歴の親セルを生年月日、支店IDの親セルを学歴、支店名の親セルを支店IDにそれぞれ設定し、親セルと子セルのレベルツリーが6になります。
設定方法二:氏名、性別、生年月日、学歴、支店ID、支店名の親セルをすべて雇員IDに設定し、親セルと子セルのレベルツリーが1になります。
上記の二種類のデザインは同じデータを表示しますが、方法二のほうが明らかに一より速いです。
7.行の高さと列の幅を自動調整にしない
列の幅を自動調整にした場合、帳票で表示される前にセルの中のデータの幅または高さを先に計算する必要があるため、計算にかかる時間が長くなってしまいます。したがって、行の高さと列の幅はできるだけ自動調整にしないほうがいいでしょう。セルを選択して右側からセル属性-その他を選択し、自動調整しませんを選択してみましょう。具体的な画面は下記の通りです。
8.フィルタ条件の最適化
テンプレートにおけるフィルタ条件の設定が重複するか否かを確認し、余計なフィルタ条件を削除します。
つまり、もしデータ列が同じデータセットからのものであれば、一番左の親セルでフィルタ条件を設定した上で、親セルをフィルタ条件とすればいいです(デフォルトとしてはフィルタ条件にしています)。