怎样获得group 数据窗口中的分组序号

经常有人问起,在Group DataWindow里如何得到分组的序号,通常的答案是:
getrow() - first(getrow() for group 1) + 1

但这个其实是得到每个分组里的记录的序号,即对每一个分组的记录都重新从1开始排序,这个Compute field是放在Detail Band里的。而很多人想要的是这个:所有分组的序号。那就要用到下面这个高级用法,这是放在Group header Band里的,假设按bm分组。
cumulativeSum( if( bm = bm [-1],0,1) for all )

如果该分组是一个计算列或有多个字段组成,那么在上方的if条件的括号中要加and,如:

cumulativeSum( if( bm= bm[-1] and ywy = ywy[-1],0,1) for all )

如果是放在组summary区的计算field,又要在组汇总时显示计算组序号,又要在显示detail带明细数据时显示“小计:”字样,那么先要设置好计算列公式,再通过动态改变成显示的文本,如果需要可以通过动态再改变回显示序号。如果一开始设置计算列为:“小计:”文字,那么在程序处理时动态赋值组序号公式,则该计算列将显示空白,组计算公式无法正确显示。

dw_1.object.compute_group.Expression = "cumulativeSum( if( bm= bm[-1] and ywy = ywy[-1],0,1) for all )"
dw_1.object.compute_group.Expression = "'小计:'"

dw_1.object.compute_group.Expression = "cumulativeSum( if( bm= bm[-1] and ywy = ywy[-1] and zydl = zydl[-1] and dlwtf = dlwtf[-1],0,1) for all )"
 

下方是以往的老文章

怎样对分组里的行加上序号,要求每个组里行的序号从1开始!  
---------------------------------------------------------------  
 
用计算域,放在明细区:    
getrow()  -  first(getrow()  for  group  1)  +  1  
---------------------------------------------------------------  
 
first(getrow()  for  group  1)  
可以取得每一组的第一行的行号  
---------------------------------------------------------------  
 
//做分组组号  
   cumulativeSum(    if(  分组列名  [-1]  =  分组列名  [0],0,1)    for  all  )  
 //做组内编号  
 GetRow()    -    First(GetRow()    for    Group    1)    +    1  
---------------------------------------------------------------  
 
★★★★★★★★★★★★★★★★★★★★★  
★★★★ PB中怎样按分组取行号? ★★★★  
★★★★★★★★★★★★★★★★★★★★★  
 
 
有三个函数可以灵活使用:  
 
CumulativePercent:取得包括当前行之前值占总数的百分点  
 
CumulativeSum:取得包括当前行之间的行的值的总数  
 
Percent:取得当前行值占总数的百分点  
 
 
用法(三个都相同):  
 
CumulativeSum  (  column  {  FOR  range  }    
 
下面的表达式可取得分组1的每一行的行号:  
 
CumulativeSum  (1  FOR  GROUP  1)  
 
range的值可以这样写:  
 
ALL  —  (缺省)  取某列的当前行之前所有行的累积值  
 
GROUP  n  —  取某列的当前行之前,在分组中所有行的累积值。必须指定一个分组号。例如  GROUP  1  
 
PAGE  —  取某列的当前行之前,且在本页内所有行的累积值  
 
对于交叉表,可以这样指定  CROSSTAB  的范围:  
 
CROSSTAB  —  (只用于交叉表)  在交叉表中,取某列的当前行之前所有行的累积值  
 
对于图表和  OLE  对象,  可以使用下列方式之一:  
GRAPH  —  (只用于图表)  The  cumulative  percentage  of  values  in  column  in  the  range  specified  for  the  Rows  option  
OBJECT  —  (只用于  OLE  对象)  The  cumulative  percentage  of  values  in  column  in  the  range  specified  for  the  Rows  option

 

建立一个计算字段:
count( group_field  for all distinct)

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值