合計を計算して表示するには、レポート内にテキストコンポーネントを配置し、エディタを呼び出して「サマリー」タブに移動します。
表現フィールド。このフィールドは、合計を計算する式を指定します。式は手動で指定することもできますし、他のパラメータの種類によって自動的に生成されることもあります。
サマリー機能フィールド。このフィールドでは、合計を計算する機能が選択されています。
このフィールドでは、合計を計算するデータバンドを指定することができます。
このフィールドでは、合計を計算するためにどの値を使用するかをデータ列で指定することができます。
ラジオボタンを使って、合計を計算する対象を設定することができます。
レポート。合計は、レポート全体に対して計算されます。
関数結果の合計のタイプ
デフォルトでは、合計を計算する関数はDecimal型を返します(関数-CountとCountDistinctを除く)。しかし、他の2つのデータ型、DoubleとInt64を使用して計算を行うこともできます。Doubleデータ型を使って計算結果を返す関数の場合、関数名の上位にラテン文字のDを追加します。Int64型を使用した計算では、上位レジスタにラテン文字のIを追加する必要があります。このように分離することで、合計の計算における損失を回避することができます。 |
関数 | 戻り値のタイプ |
和() | 10進数 |
SumD() | ダブル |
SumI() | Int64 |
関数の構文に関するいくつかの単語
C#プログラミング言語を使用する場合、すべての関数はレジスターに厳密に準拠して記述されている必要があります。
ページまたはコンテナによる計算の場合、構文は同じですが、関数名のプレフィックスとしてラテン文字cが追加されています。
列ごとに合計を計算するには、関数名にcolプレフィックスを追加します。
Count関数は、計算用の式がないという点で他の関数とは異なります。この関数の構文を以下に示します。
任意の場所に合計を表示する
通常、関数呼び出しが指定されているテキスト式のコンポーネントは、データバンドのフッターバンドに配置されます。フッターバンドにはいくつかの種類があります。
上記のいずれかの帯域の機能を備えたコンポーネントの位置により、レポートジェネレータは、この機能が適用可能なデータ帯域を正確に判断できます。また、機能を備えたコンポーネントをデータバンドに配置することもできます。この場合、各データ行に全行の関数計算結果が表示されます。
たとえば、ヘッダーバンドに合計を表示する場合は、スクリプトを使用してこれを行います。ただし、Stimulsoftレポートでは、関数を持つコンポーネントはレポートの任意の帯域に含まれる可能性があります。
また、関数を含むコンポーネントをレポートテンプレートのページや他のページに配置することもできます。たとえば、リストによって値の合計を計算し、それをヘッダーリストに出力することができます。別の例として、リストの行数を計算し、ページの先頭に値を出力します。同時に、制限があります。結果が計算されるデータバンドを指定する必要があります。
関数を使用した式
合計を計算するために、式に追加の引数を指定しないことができます。たとえば、Count関数の場合、これはオプションです。または、Sum関数に設定できる引数は1つだけです。これは、計算する必要のある式です。レポートジェネレータがこれらの関数がどのデータバンドに関連しているかを判断できる場合、これはすべて可能です。
それ以外の場合は、引数で、合計を計算する必要があるデータソースまたはデータバンドを指定する必要があります。式では、次のように指定できます。
ページごとの合計の計算
ページまたはパネルごとに合計を計算するには、関数名のプレフィックスとしてラテン文字の「c」を小文字で追加する必要があります。
パネルまたはページで合計を計算する場合は、集計関数の計算に使用するデータバンドを指定することが望ましいです。1ページに複数のデータバンドが存在する可能性があるため、これが必要です。
1つのページまたはパネルで、任意の数の集計関数を使用できます。Stimulsoftソフトウェアにはこれに関する制限はありません。ページごとの合計と条件を組み合わせることができます。例えば:
列ごとの合計の計算
列ごとに合計を計算するには、関数の名前に小文字の接頭辞col(単語columnから)を追加する必要があります。例えば:
列ごとに合計を計算する場合、関数を含むテキストコンポーネントをColumnHeader、ColumnFooter、Header、またはFooterバンドに配置することが望ましいです。列ごとに無制限の合計数を計算できます。これに制限はありません。また、列ごとのフッターを次の条件で組み合わせることができます。
イベントコードで合計を計算する
Stimulsoftソフトウェアを使用すると、レポートイベントのコードで関数を計算できます。より複雑な関数を計算する機能を提供します。また、この場合、計算の過程でコードから計算値を参照し、この過程に影響を与えることができます。この計算を行うには、関数の値を格納する変数をデータディクショナリに作成する必要があります。
変数を作成するときに、変数のデータ型が示されます。たとえば、Decimal、初期値、たとえば0です。次に、Dataバンドで、Renderingイベントで変数をインクリメントする式を示します。たとえば、Products.UnitPriceフィールドのフィールドで値の合計を計算する場合、式は次のようになります。
計算結果を表示するには、次の式を使用してテキストコンポーネントを配置する必要があります。
また、式{Variable}のテキストコンポーネントが必要です。ProcessAtプロパティをEnd ofReport値に設定します。レポートジェネレータは、残りのコンポーネントを処理した後、変数の値を計算する必要があります。
条件付きの合計の計算
合計を計算するときに、特定の値を考慮する必要がある場合があります。この場合、条件は合計を計算する機能で設定されます。たとえば、ゼロより大きい値を合計する必要があります。合計を計算する関数に条件を追加するには、関数名に接尾辞If(ラテンアルファベット)を追加し、条件に引数を追加する必要があります。
|
合計とコンポーネントのサイズの自動変更
|
データバンドが無効になっている合計
データバンドはさまざまな方法で無効にできます。たとえば、特定の条件で無効にしたり、高さがゼロになる場合があります。デフォルトでは、レポートをレンダリングするときに、レポートエンジンは無効になっているデータバンドを考慮せず、それらを処理しません。ただし、無効になっているデータバンドごとに合計を計算する必要がある場合は、このバンドのCalcInvisibleプロパティをtrueに設定する必要があります。この場合、レポートにはデータを含むバンドのみが表示され、データバンドを考慮して合計の計算が実行されます。
マスター詳細レポートでの合計の計算
階層レポートで合計を計算する場合、結果の計算にいくつかの問題があります。マスター詳細レポートに基づく例を考えてみましょう。レポートに製品カテゴリのリストが表示されているとします。この場合、カテゴリはマスターエントリであり、製品は詳細エントリです。
レポートに表示される製品の数を数えたいとします。関数Count()を使用してフッターバンドを製品のリスト(詳細レコード)を含むバンドに追加すると、各カテゴリ(マスターレコード)ごとに合計が計算されます。
関数Count()を使用してフッターバンドをカテゴリを使用してバンドに追加すると、結果はレポート内のマスターエントリの数、カテゴリの数になります。ただし、マスタ詳細レポートでは、すべての詳細レコードの合計をすぐに計算できます。この場合、両方の(マスターと詳細)バンドの名前をコロン付きの関数として指定する必要があります:Count(MasterBand:DetailBand)。
Count(MasterBand:DetailBand)関数の結果は、すべてのカテゴリーの製品の数です。