在PB的数据窗口中,当使用了分组的情况下,没有直接的方法可以直接显示出当前行所在组的组的行数。在测试中发现了下面的方法可以显示当前的组的行数:
第一步:在数据窗口中新建一个分组,假设当前组为第1组 。
第二步:再在Detial中加入一个计算列,命名为compute_1,把Visible = false,计算列的表达式设为 If(cumulativeSum( 1 for group 1) = 1 , 1 ,0)
这样可以确定每一个分组第一行的compute_1值为1,其他行数在当前分组中为0,为下一步打好基础。
第三步:再在Detial区域中放入第二个计算列compute_2,把表达式定义为:
cumulativeSum( compute_1 for all)
这样compute_2所显示的即是所要得到的当前行所在的组的行数。由于第二步的表达式使得每一组中只有第一行的数值为1,其他均为0,所以可以使用cumulativeSum使用函数得到 当前组的行数。
其中使用了数据窗口函数cumulativeSum(),该函数简介如下:
功能 计算从头开始到当前行(包括当前行)位置的累进和。
语法 CumulativeSum ( column { FOR range } )
参数 column:指定要计算累进和的列。column可以是列名,也可以使用以#开始的列号,还可以是其值代表列的表达式。column的类型必须是数值型数据类型。
range:可选项,指定计算累进和的数据范围。对大多数风格的数据窗口来说,range的有效取值为:
1、ALL棗缺省值,计算指定列所有行的累进和
2、GROUP n 棗计算第n组中指定列的累进和,n指定组号
3、PAGE 棗计算当前页中指定列的累进和对交叉表(Crosstab)风格的数据窗口对象来说,range的有效取值为CROSSTAB,表示计算交叉表中该列所有数据行的累进和。
对Graph和OLE对象来说,在range中指明对象类型。聚合函数的值由该对象本身定义的数据范围决定,range的有效取值为:
4、Graph棗只用于Graph对象,行的范围由Graph对象的Row选项决定
5、OBJECT棗只用于OLE对象,行的范围由OLE对象的Row选项决定
返回值 与指定列的数据类型相同。函数返回指定列指定范围数据的累进和。
用法 指定range参数后,在range参数指定的每个范围开始时,CumulativeSum()函数从头开始计算累进和。
第一步:在数据窗口中新建一个分组,假设当前组为第1组 。
第二步:再在Detial中加入一个计算列,命名为compute_1,把Visible = false,计算列的表达式设为 If(cumulativeSum( 1 for group 1) = 1 , 1 ,0)
这样可以确定每一个分组第一行的compute_1值为1,其他行数在当前分组中为0,为下一步打好基础。
第三步:再在Detial区域中放入第二个计算列compute_2,把表达式定义为:
cumulativeSum( compute_1 for all)
这样compute_2所显示的即是所要得到的当前行所在的组的行数。由于第二步的表达式使得每一组中只有第一行的数值为1,其他均为0,所以可以使用cumulativeSum使用函数得到 当前组的行数。
其中使用了数据窗口函数cumulativeSum(),该函数简介如下:
功能 计算从头开始到当前行(包括当前行)位置的累进和。
语法 CumulativeSum ( column { FOR range } )
参数 column:指定要计算累进和的列。column可以是列名,也可以使用以#开始的列号,还可以是其值代表列的表达式。column的类型必须是数值型数据类型。
range:可选项,指定计算累进和的数据范围。对大多数风格的数据窗口来说,range的有效取值为:
1、ALL棗缺省值,计算指定列所有行的累进和
2、GROUP n 棗计算第n组中指定列的累进和,n指定组号
3、PAGE 棗计算当前页中指定列的累进和对交叉表(Crosstab)风格的数据窗口对象来说,range的有效取值为CROSSTAB,表示计算交叉表中该列所有数据行的累进和。
对Graph和OLE对象来说,在range中指明对象类型。聚合函数的值由该对象本身定义的数据范围决定,range的有效取值为:
4、Graph棗只用于Graph对象,行的范围由Graph对象的Row选项决定
5、OBJECT棗只用于OLE对象,行的范围由OLE对象的Row选项决定
返回值 与指定列的数据类型相同。函数返回指定列指定范围数据的累进和。
用法 指定range参数后,在range参数指定的每个范围开始时,CumulativeSum()函数从头开始计算累进和。