カテゴリを表示

バンドに関連付けられた合計

1 読むのに要する時間

合計を計算して表示するには、レポート内にテキストコンポーネントを配置し、エディタを呼び出して「サマリー」タブに移動します。
 
表現フィールド。このフィールドは、合計を計算する式を指定します。式は手動で指定することもできますし、他のパラメータの種類によって自動的に生成されることもあります。

 サマリー機能フィールド。このフィールドでは、合計を計算する機能が選択されています。

このフィールドでは、合計を計算するデータバンドを指定することができます。

 このフィールドでは、合計を計算するためにどの値を使用するかをデータ列で指定することができます。

ラジオボタンを使って、合計を計算する対象を設定することができます。


 レポート。合計は、レポート全体に対して計算されます。

 。合計は、レポートのすべての列で計算されます。

 ページ。合計は、レンダリングされたレポートのすべてのページで計算されます。 

 ランニングトータルパラメータ。このフラグがチェックされている場合、合計がランニングとして計算されます。チェックされていない場合は、プロジェクト(レポート、列、ページ)のみで合計が計算されます。

 条件パラメーター。このフラグがチェックされている場合、合計を計算する際にその条件が考慮されます。チェックされていない場合は、条件を考慮せずに合計が計算されます。

 フィールドは、条件の式を指定する。

関数結果の合計のタイプ

 デフォルトでは、合計を計算する関数はDecimal型を返します(関数-CountとCountDistinctを除く)。しかし、他の2つのデータ型、DoubleとInt64を使用して計算を行うこともできます。Doubleデータ型を使って計算結果を返す関数の場合、関数名の上位にラテン文字のDを追加します。Int64型を使用した計算では、上位レジスタにラテン文字のIを追加する必要があります。このように分離することで、合計の計算における損失を回避することができます。 
関数戻り値のタイプ
和()10進数
SumD()ダブル
SumI()Int64
注意:文字I、Dは、CountおよびCountDistinctを除くすべての関数に追加できます。これらの関数は常にInt64型を返します。

関数の構文に関するいくつかの単語

C#プログラミング言語を使用する場合、すべての関数はレジスターに厳密に準拠して記述されている必要があります。

 合計(式)-合計は、自動的に識別されたオブジェクトによって計算されます。

 Sum(band、expression)-合計は特定のオブジェクトによって計算されます。

 SumIf(band、expression、condition)-合計は、条件を持つオブジェクトによって計算されます。

 式-計算用の式。

 band-計算を実行するバンドの名前。

 条件-計算を式に含める条件。

ページまたはコンテナによる計算の場合、構文は同じですが、関数名のプレフィックスとしてラテン文字cが追加されています。

 cSum(式)-ページまたはコンテナによる合計の計算。

 cSum(band、expression)-ページまたはコンテナとその上のオブジェクトによる合計の計算。

 cSumIf(band、expression、condition)-特定の条件下で、ページまたはコンテナーとその上のオブジェクトによる合計の計算。

列ごとに合計を計算するには、関数名にcolプレフィックスを追加します。

 colSum(式)-合計は列によって計算されます。

 colSum(band、expression)-合計は、列とその中のオブジェクトによって計算されます。

 colSumIf(band、expression、condition)-合計は、特定の条件下で、列とその中のオブジェクトによって計算されます。

Count関数は、計算用の式がないという点で他の関数とは異なります。この関数の構文を以下に示します。

 Count()-行数を計算します。

 CountIf(condition)-条件によって行数を計算します。

 Count(band)-オブジェクトごとの行数を計算します。

 CountIf(band、condition)-オブジェクトと条件によって行数を計算します。

 cCount()-ページとコンテナごとに行数を計算します。

 cCount(バンド)-ページ(コンテナー)とその上のオブジェクトごとに行数を計算します。

 cCountIf(band、condition)-特定の条件下でページ(コンテナー)とその上のオブジェクトによる行数を計算します。

 colCount()-列ごとの行数を計算します。

 colCount(band)-列とこの列のオブジェクトによる行数を計算します。

任意の場所に合計を表示する

通常、関数呼び出しが指定されているテキスト式のコンポーネントは、データバンドのフッターバンドに配置されます。フッターバンドにはいくつかの種類があります。

 ReportSummaryBand-バンドは、レポート全体の合計を表示するために使用されます。

 PageFooterBand-バンドはページごとの合計を表示するために使用されます。

 FooterBand-バンドはリストごとに合計を表示するために使用されます。

 GroupFooterBand-バンドは、グループごとの合計を表示するために使用されます。

  ColumnFooterBand-バンドは、列ごとの合計を表示するために使用されます。

上記のいずれかの帯域の機能を備えたコンポーネントの位置により、レポートジェネレータは、この機能が適用可能なデータ帯域を正確に判断できます。また、機能を備えたコンポーネントをデータバンドに配置することもできます。この場合、各データ行に全行の関数計算結果が表示されます。

たとえば、ヘッダーバンドに合計を表示する場合は、スクリプトを使用してこれを行います。ただし、Stimulsoftレポートでは、関数を持つコンポーネントはレポートの任意の帯域に含まれる可能性があります。

 注意:関数を含むコンポーネントは、レポートのどこにでも配置できます。

また、関数を含むコンポーネントをレポートテンプレートのページや他のページに配置することもできます。たとえば、リストによって値の合計を計算し、それをヘッダーリストに出力することができます。別の例として、リストの行数を計算し、ページの先頭に値を出力します。同時に、制限があります。結果が計算されるデータバンドを指定する必要があります。

{合計(DataBand1、Products。UnitsInStock)}。この場合、DataBand1の各行のProducts.UnitsInStock列の値の合計が計算されます。

{カウント(DataBand1)}。この場合、DataBand1の行数が計算されます。

関数を使用した式

合計を計算するために、式に追加の引数を指定しないことができます。たとえば、Count関数の場合、これはオプションです。または、Sum関数に設定できる引数は1つだけです。これは、計算する必要のある式です。レポートジェネレータがこれらの関数がどのデータバンドに関連しているかを判断できる場合、これはすべて可能です。

注意:この関数を持つコンポーネントがデータバンドを持つバンドに関連している場合、レポートジェネレータは関数と特定のデータバンドとの関係を判断できます。つまり、関数を持つコンポーネントは、このデータバンドに関連するヘッダーバンドとフッターバンドにあります。

それ以外の場合は、引数で、合計を計算する必要があるデータソースまたはデータバンドを指定する必要があります。式では、次のように指定できます。

  値が計算されるオブジェクト-{Sum(Da​​taSource.Column)}

  オブジェクトとそれらを使用したさまざまな数学演算-{100+ Sum(Da​​taSource.Column)* 2}

ページごとの合計の計算

ページまたはパネルごとに合計を計算するには、関数名のプレフィックスとしてラテン文字の「c」を小文字で追加する必要があります。

 {AcCount(DataBand1)}-レポートエンジンは、1ページまたはパネルの行数を計算します。

 注意:ページによる合計の計算は、パネルの場合と同じ原則です。

パネルまたはページで合計を計算する場合は、集計関数の計算に使用するデータバンドを指定することが望ましいです。1ページに複数のデータバンドが存在する可能性があるため、これが必要です。

1つのページまたはパネルで、任意の数の集計関数を使用できます。Stimulsoftソフトウェアにはこれに関する制限はありません。ページごとの合計と条件を組み合わせることができます。例えば:

 {CountIf(DataBand1、Products.UnitsInStock = 0)}-レポートエンジンは、このページのゼロに等しいアイテムの数を計算します。

列ごとの合計の計算

列ごとに合計を計算するには、関数の名前に小文字の接頭辞col(単語columnから)を追加する必要があります。例えば:

 {ColCount()}-レポートエンジンは、各列の行数を計算します。

注意:StimulsoftReportsの列による合計の計算には1つの制限があります。合計は、ページの列によってのみ計算できます。データバンドの列による合計の計算は許可されていません。

列ごとに合計を計算する場合、関数を含むテキストコンポーネントをColumnHeader、ColumnFooter、Header、またはFooterバンドに配置することが望ましいです。列ごとに無制限の合計数を計算できます。これに制限はありません。また、列ごとのフッターを次の条件で組み合わせることができます。

 {ColCountIf(DataBand1、Products.UnitsInStock = 0)}-レポートエンジンは、条件が実行される各列の行数を計算します。

イベントコードで合計を計算する

Stimulsoftソフトウェアを使用すると、レポートイベントのコードで関数を計算できます。より複雑な関数を計算する機能を提供します。また、この場合、計算の過程でコードから計算値を参照し、この過程に影響を与えることができます。この計算を行うには、関数の値を格納する変数をデータディクショナリに作成する必要があります。

注意:関数の計算結果を格納するためにコードで宣言された変数を使用しないでください。データディクショナリの変数を使用する必要があります。

変数を作成するときに、変数のデータ型が示されます。たとえば、Decimal、初期値、たとえば0です。次に、Dataバンドで、Renderingイベントで変数をインクリメントする式を示します。たとえば、Products.UnitPriceフィールドのフィールドで値の合計を計算する場合、式は次のようになります。

 変数+ = Products.ItemsInStock;

計算結果を表示するには、次の式を使用してテキストコンポーネントを配置する必要があります。

 {変数}

また、式{Variable}のテキストコンポーネントが必要です。ProcessAtプロパティをEnd ofReport値に設定します。レポートジェネレータは、残りのコンポーネントを処理した後、変数の値を計算する必要があります。

条件付きの合計の計算

合計を計算するときに、特定の値を考慮する必要がある場合があります。この場合、条件は合計を計算する機能で設定されます。たとえば、ゼロより大きい値を合計する必要があります。合計を計算する関数に条件を追加するには、関数名に接尾辞If(ラテンアルファベット)を追加し、条件に引数を追加する必要があります。

{SumIf(Products.UnitsInStock、Products.UnitsInStock> 1)}。この場合、Products.UnitsInStock値の量が計算されます。これは1より大きい値です。

{CountIf(Products.UnitsInStock == 0)}。この場合、列の値がゼロの行数が計算されますUnitsInStock

 注意:DoubleまたはInt64を使用して計算を行う場合は、最初にラテン文字のDまたはIを追加してから、Ifという単語を追加する必要があります。例:{SumDIf(Products.UnitsInStock、Products.UnitsInStock> 0)}。

合計とコンポーネントのサイズの自動変更

 注意:レポートをレンダリングするとき、現時点では、コンポーネントのサイズが決定されているとき、合計関数の計算結果はまだ不明です。これは、合計の計算が行われるコンポーネントの自動サイズ変更をインストールするときに考慮する必要があります。そうしないと、合計関数の計算結果に対してコンポーネントのサイズが正しくない場合に問題が発生する可能性があります。

データバンドが無効になっている合計

データバンドはさまざまな方法で無効にできます。たとえば、特定の条件で無効にしたり、高さがゼロになる場合があります。デフォルトでは、レポートをレンダリングするときに、レポートエンジンは無効になっているデータバンドを考慮せず、それらを処理しません。ただし、無効になっているデータバンドごとに合計を計算する必要がある場合は、このバンドのCalcInvisibleプロパティをtrueに設定する必要があります。この場合、レポートにはデータを含むバンドのみが表示され、データバンドを考慮して合計の計算が実行されます。

マスター詳細レポートでの合計の計算

階層レポートで合計を計算する場合、結果の計算にいくつかの問題があります。マスター詳細レポートに基づく例を考えてみましょう。レポートに製品カテゴリのリストが表示されているとします。この場合、カテゴリはマスターエントリであり、製品は詳細エントリです。

レポートに表示される製品の数を数えたいとします。関数Count()を使用してフッターバンドを製品のリスト(詳細レコード)を含むバンドに追加すると、各カテゴリ(マスターレコード)ごとに合計が計算されます。

関数Count()を使用してフッターバンドをカテゴリを使用してバンドに追加すると、結果はレポート内のマスターエントリの数、カテゴリの数になります。ただし、マスタ詳細レポートでは、すべての詳細レコードの合計をすぐに計算できます。この場合、両方の(マスターと詳細)バンドの名前をコロン付きの関数として指定する必要があります:Count(MasterBand:DetailBand)。

Count(MasterBand:DetailBand)関数の結果は、すべてのカテゴリーの製品の数です。