このサイトをご覧になるには、JavaScriptを有効にしてください。

[帳票開発ツール]Stimulsoft レポート&ダッシュボード ユーザーマニュアル

ナビゲーション: レポート内部コンポーネント > 関数 > 合計

バンドに関係しない合計

スクロール トップ その他

 

レポートにおける合計の計算は、{Sum(DataBand1)}のように式を指定することで行うことができます。DataBandを使った操作を行うたびに、1つの値が計算される。そして、計算された値をすべて足し合わせて、合計値を表示します。この場合、合計値はバンドと関連付けられます。Stimulsoftレポートでの合計の計算は、別の方法、つまり即座に行うことができます。つまり、バンドに関連付けない合計を計算するのです。これを行うには、関数の前に特別な接頭辞Totalsをセパレータ". "で囲みます。接頭辞Totalsを持つ関数の計算は、バンドに関連付けられた合計とは対照的に、関数が呼び出された場所で行われ、その計算はレポートのレンダリング中に実行されます。

 

合計 関数

機能

機能説明

サンプル

{Avg()}when

算術平均を計算します。

引数で、オブジェクトまたは2つのオブジェクトを指定する
選択された関数に応じて、異なる型(double, decimal, long, DateTime, TimeSpan)の値を返します。

{Avg(DataSource.Column1)} - Column1列の算術平均が計算されます。
{AvgDate(DataSource.ColumnDate)} - ColumnDate列の日付の平均が計算されます。
{AvgTime(DataSource.ColumnTime)} - ColumnTime列による平均時刻が計算されます。

 

すべての関数は2つの引数を持つことができます。例えば、レポートでは複数のデータバンドを使用します。最初のデータバンドの算術平均を計算する必要があります。この場合、第一引数はバンド、第二引数は計算対象である{Avg(DataBand1,DataSource.Column2)}となります。結果として、Column2の算術平均が計算されますが、DataBand1の値に対してのみ計算されます。

{Count()}

値の数または一意な値の数を計算します。
引数で、値、オブジェクト、または2つのオブジェクトを指定します。
様々なlong型の値を返します

{Count()} - 結果は、データ・ソースのエントリ数です。

 
{Count(DataBand1, DataSource.Column1)} - 結果はDataBand1のColumn1列のエントリ数です。

 
{CountDistinct(DataSource.Column1)} - 結果はDataSource.Column1列のユニークエントリの数です。

 
{CountDistinct(DataBand2, DataSource.Column2)} - 結果は、DataBand2のColumn2列のユニークエントリの数です。

{First()}

指定されたオブジェクトから最初の値を表示します。

引数で、オブジェクトまたは2つのオブジェクトを指定します。
様々なオブジェクトタイプの値を返します

{First(DataSource1.Column1)} - 結果は、DataSource1のColumn1の最初の値です。
 
{First(DataBand2, DataSource.Column2)} - 結果は、DataBand2バンドのColumn2の最初の値です。

{Last()}

指定されたオブジェクトから最後の値を表示します。

引数で、オブジェクトまたは2つのオブジェクトを指定します。
様々なオブジェクトタイプの値を返します

{Last(DataSource1.Column1)} - 結果は、DataSource1のColumn1の最後の値です。
 
{Last(DataBand2, DataSource.Column2)} - 結果は、DataBand2のColumn2の最後の値です。

{Max()}

指定されたオブジェクトから最大値を表示します。

引数で、オブジェクトまたは2つのオブジェクトを指定する
選択された関数に応じて、様々な double、decimal、long、DateTime、TimeSpan、string 型の値を返します。

{Max(DataSource1.Column1)} - 結果はDataSource1のColumn1からの最大値です。
 
{MaxDate(DataSource1.ColumnDate)} - 結果はDataSource1のColumnDateから最大値の日付になります。
 
{MaxTime(DataSource1.ColumnTime)} - 結果がDataSource1のColumnTimeの最大時刻になります。

 

{MaxStr(DataSource1.Column1)} - すべての値がアルファベット順にソートされます。結果は最後の値です。

 

{Max(DataBand2, DataSource.Column2)} - DataBand2バンドのColumn2の最大値が結果として表示されます。

{Median()}

リストから平均値(非等価)を表示します。

引数で、オブジェクトまたは2つのオブジェクトを指定する
選択された関数に応じて、さまざまな double、decimal、long 型の値を返します。

Column1には2,5,6,1,7という5つの値が含まれているとします。Median(DataSource1.Column1)} 関数は、このリストの平均値、つまり結果は6を表示します。

 

{Median(DataBand2, DataSource.Column2)} -結果はDataBand2のColumn2の平均値です。

{Min()}

指定されたオブジェクトから最大値を表示します。

引数で、オブジェクトまたは2つのオブジェクトを指定する
選択された関数に応じて、様々な double、decimal、long、DateTime、TimeSpan、string 型の値を返します。

{Min(DataSource1.Column1)} - 結果はDataSource1のColumn1からの最小値です。
 
{MinDate(DataSource1.ColumnDate)} - 結果はDataSource1のColumnDateから最小の日付になります。
 
{MinTime(DataSource1.ColumnTime)} - 結果がDataSource1のColumnTimeの最小の時間です。

 

{MinStr(DataSource1.Column1)} - すべての値がアルファベット順に並べ替えられます。結果は最初の値です。

 

{Min(DataBand2, DataSource.Column2)} - 結果はDataBand2バンドのColumn2の最小値です。

{Mode()}

値のリストの中で最も一般的な値を表示します。

引数で、オブジェクトまたは2つのオブジェクトを指定する
選択された関数に応じて、さまざまな double、decimal、long 型の値を返します。

{Mode(DataSource1.Column1)}とします。例えば、Column1に2, 2, 6, 7, 8, 7, 6, 5, 9, 4という値のリストがあったとします。この場合、値のリストの中で最も多く繰り返されるので、結果は7となります。

 
{Mode(DataBand2, DataSource.Column2)} - 結果はDataBand2のColumn2からの値になります。

{Rank(,)}

値のランクを表示します。接頭語のTotalsは必須である。
引数で指定します。

ランクを処理し割り当てるためのオブジェクト(オブジェクトの種類)。

タイトなランク、タイトでないランクを割り当てるための値(trueまたはfalse)。

値のソート方向。
様々なlongタイプの値を返す

{Totals.Rank(DataBand1,DataSource.Column1)}.Column1には値のリストが含まれているとします。44, 9, 36, 55, 71.この場合、値は昇順、すなわち9, 36, 44, 55, 71にソートされ、それぞれにランクが割り当てられます。9はランク1、36はランク2、44はランク3、55はランク4、71はランク5となります。デフォルトでは、タイトなランクを計算し、ランクを割り当てるための値を昇順でソートします。
 

{Totals.Rank(DataBand1,DataSource.Column1, true, StiRankOrder.Dess)} - この場合、trueが設定されているのでタイトランクが発生します。ランクが付くと、StiRankOrderがDescに設定されているので、値は降順にソートされます。昇順でソートする場合(デフォルトで使用)には、Asc(StiRankOrder.Asc)に設定する必要があります。

 

きつくないランクの例としては、{Totals.Rank(DataBand1, DataSource.Column1, false, StiRankOrder.Asc)}のようなものがあります。Column1が値のリストを含むと仮定します。44, 9, 44, 9, 31, 64,68, 71.値は昇順、つまり9, 9, 31, 44, 44, 68, 71で割り当てられます。この場合、ランクは次のようになります。9-ランク1、9-ランク1、31-ランク3、44-ランク4、44-ランク4、68-ランク7、71-ランク8となる。つまり、数値にランクをつける際には、直前の値のランクと、このランクを持つ数値の数が考慮される。

{Sum()}

値の合計の結果を表示します。

引数で指定します。

処理とランク付けを行うオブジェクト(タイプオブジェクト)。

条件

和算式
long, decimal, double, timeSpan 型の値を返す。

{Sum(DataSource1.Column1)} - 結果がDataSource1内のすべてのColumn1値の合計になります。

 

{SumDistinct(DataSource1.Column1)} - 結果が、DataSource1内のすべてのユニークなColumn1値の合計です。

 

SumTime(DataSource1.Column1) - 結果はDataSource1のColumn1の時刻の合計です。

 

{Sum(DataBand2,DataSource2.Column2)} - 結果がDataBand2のColumn2の値の合計になります。

 

{SumDistinct(DataBand1,DataSource.Column1, DataSource.Column2)} - DataBand2のColumn1からのユニークな値に対応するColumn2の値の合計が結果になります。

 

 

バンドに関連しない合計を計算するためのサンプル

 

例えば、カテゴリー別に商品を一覧できる「Master-Detail Report」があります。

 

 

本レポートでは、レポート全体に対して、各カテゴリーごとに結果を算出することができます。また、全体に対する各カテゴリーの割合を計算することも可能です。まず始めに、あるカテゴリの商品量を計算してみましょう。そのためには、レポートテンプレートにフッターバンドを追加し、合計を計算する式{Sum(DataBand2,Products.UnitPrice)}をテキストコンポーネントとして配置します。値の合計には、Sum関数を使用します。その引数には、合計とデータ列を計算し、その値を要約するオブジェクトを指定します。カテゴリーごとの商品量を計算する必要があるので、合計を計算するオブジェクトは詳細データバンド、つまりDataBand2となります。UnitPrice列の値は、各商品の価格を示している。したがって、これらの値の合計がカテゴリの合計となる。

 

 

この場合、結果はデータバンドに関連付けられます。レポートによる合計を計算するには、バンドと関連付けられていない関数を使用します。そのためには、関数に接頭辞Totalsを". "区切りで追加します。オブジェクトとして、データソースを指定する必要があります。レポートの合計を計算する式は、{Totals.Sum(Products, Products.UnitPrice)} となります。結果は、マスターバンドに表示されます。

 

 

毎回、レポートでマスターバンドを印刷すると、レポートによる合計が表示されます。計算結果を用いて、総計に占める各カテゴリーの割合を算出することが可能です。結果は割合で表示されます。割合の計算方法は、レポート別合計のカテゴリ別合計を{(Sum(DataBand2,Products.UnitsInStock) / Totals.Sum(Products,Products.UnitsInStock))} で割ることで算出します。シェアを表示するテキストコンポーネントには、パーセントの書式を設定します。結果はマスターバンドに表示されます。

 

 

このように、レポート内の任意の合計を計算することができます。バンドに関連しない合計を計算するには、関数名の前にTotalsを付け、セパレータに". "を使用します。