0

CR 新手,使用 CR v10 和 SQL Server 2000。

对于第一条记录,即期初余额,计算是输入日期的 sum(field),我在 SP 中计算为 BegDateSum

但是对于一个组下的其余记录,计算应该是previous(balance)+IN+OUT

样品已给出:

Date      Doc Descrip IN   OUT  Balance
Group Header--------    Beginning Balance-------------- 50    <---- sum(field) from my inputdate
3/2/2012  A           -1    0    49 <-- (50+(-1)+0)
4/2/2012  B           -2    0    47 <-- (49+(-2)+0)
5/2/2012  C            0    3    50
6/2/2012  D           -2    3    51

我如何实现这一目标?

我不确定是否使用运行总计,以防万一我必须怎么做。

4

1 回答 1

0

在这种情况下,运行总计字段将不起作用,它们旨在将一个字段相加(或计数或平均等)并自动为您提供小计。但是,我们可以做一些自定义函数来提供您需要的结果。假设您的初始 50 是一个静态值,您可以将一个变量设置为该数量,然后添加 IN 和 OUT 值(打印该结果)。

首先,使用如下公式初始化报表标题中的值:

WhilePrintingRecords;
Global NumberVar Balance;
Balance := 50;
""; //print nothing on the screen

然后,计算和显示新余额的公式,在数据所在的栏中:

WhilePrintingRecords;
Global NumberVar Balance;
Balance := Balance + {tableName.IN} + {tableName.OUT};

最后一行计算新值,并告诉公式的结果应该是什么。

如果以某种方式计算“50”,则必须在计算新余额的公式之前完成。如果它基于读入的第一条记录,您将需要使用包含 的公式If PreviousIsNull({tableName.Balance}) Then ...,这通常是数据集中第一条记录的良好指标(除非该字段可以为空)。

于 2013-03-28T22:03:46.900 回答