0

個人という数式フィールドからの集計合計を表示するレポートにグループ ヘッダー セクションがあります。

if not IsNull({AirBilling.BillingCode}) and {AirBilling.BillingCode} = 'P' then
    {AirBilling.Gross}
else
    0

レポートの最後にあるレポート フッターに、グループ ヘッダー セクションで計算されたすべての個人合計の合計を表示します。現在、特定のレコードをフィルター処理するサブレポートがあり、サブレポートによって返されたカウントに応じて、メイン レポートのレコードを非表示にしています。私の問題は、私の主なレポートがフッターの合計でも抑制されたレコードの数を考慮していることです。上記の式フィールド ロジックに if RowCount>0 then..(if not IsNull....) という条件を設定しようとすると、レポートを実行しようとすると、「A summary has」というエラーが表示されます。非繰り返しフィールドで指定されています。フッターセクションで計算される抑制されたレコードを省略する方法はありますか。RowCount は、メイン レポートのレコードをフィルター処理するために使用しているサブレポートによって返される共有変数の値です。

4

2 に答える 2

0

行が抑制されているかどうかを判断する数式を実行する別のフィールドを非表示にしておくことは可能でしょうか。これに基づいて、0または1が表示されます。次に、そのフィールドを行数として集計できます。

または、すでにレッグワークを実行した列を生成するストアドプロシージャからサブレポートを作成することもできます。次に、返されるデータ列を使用して、この問題を支援できます。

于 2012-05-04T17:51:32.500 に答える
0

私が理解しているように、サブレポートを実行して、メイン レポートの特定の行を (表示と合計の両方から) 除外する必要があるかどうかを判断しようとしています。これを解決するには、次の 2 つの方法があります。

  • サブレポートのロジックをメイン レポートのクエリ/ストアド プロシージャに複製して、関連するレコードが Crystal に到達する前に除外されるようにします。サブレポートは必要ありません。
  • サブレポートとメイン レポートを交換し (ユーザーが入力したパラメーターを除いて、現在のメイン レポートのデータは現在のサブレポートには必要ないと仮定して)、現在のメイン レポートの関連データを に渡します。パラメータとして、サブレポートになったもの。

Crystal は、データを操作するよりもデータをフォーマットするためのツールとして優れているため、前者のアプローチをお勧めします。一般に、SQL ははるかに優れたデータ操作ツールです。

于 2012-05-04T06:44:17.140 に答える