PB开发系统实用工具2-数据汇总功能

本文介绍如何在PB环境中自建一个类似Excel的数据透视功能,通过创建弹出窗口和数据窗口控件,实现用户自定义分组和汇总,动态进行数据汇总。

用户很多时候需要对查询出来的数据做小范围数据汇总,这时候Excel的数据透视功能优势就出来了,本文利用PB自建一个类似的数据透视功能。

1,新建个弹出型窗口,放入三个数据窗口控件,具体如图

2,实现方法,将调用它的数据窗口所有数据列(计算列暂不支持)分成两类,一类为非数值型字段(分组栏位),一类为数值型字段(汇总栏位),当用户选好需要汇总的分组栏位和汇总栏位后,系统将按选择条件自动汇总。

3,实现代码,

一,装载左边两个类型的字段名

//==============================================================================
// 事件: ue_populate()
//------------------------------------------------------------------------------
// 描述:
//------------------------------------------------------------------------------
// 参数:
//        value    u_dw    adw_group        
//------------------------------------------------------------------------------
// 返回值:  
//------------------------------------------------------------------------------
// 作者:    zzx        日期: 2018.01.19
//==============================================================================
String ls_column,ls_coltext,ls_coltype
Int li_column,i,li_row,li_cross

If adw_group.Object.datawindow.Processing = '4' Then
    adw_group.Modify('datawindow.crosstab.staticmode=no')
End If
    
li_column = Integer(adw_group.Object.datawindow.column.count)

If adw_group.Object.datawindow.Processing = '4' Then
    adw_group.Modify('datawindow.crosstab.staticmode=yes')
    li_cross = Integer(adw_group.Object.datawindow.column.count)
Else
    li_cross = 0
End If

For i = 1 To li_column
    ls_column = adw_group.Describe("#"+String(i)+".name")
    
    If Lower(adw_group.Describe(ls_column + "_t.Type")) = 'text' Then
        ls_coltext = adw_group.Describe(ls_column + "_t.text")
        
        If ls_coltext = '?' Then Continue;
        If ls_coltext = '!' Then Continue;
        
        If Len(ls_coltext) > 0 Then
            If Right(ls_coltext,2) = '▽' Or Right(ls_coltext,2) = '△' Then
                ls_coltext = Left(ls_coltext,Len(ls_coltext) - 2)
            End If
            
            ls_coltype = Left(Lower(adw_group.Describe(ls_column + ".ColType" )),5)
            
            If ls_coltype = "numbe" Or ls_coltype = "decim" Then
                li_row = dw_data.InsertRow(0)
                dw_data.Object.col_name[li_row] = ls_coltext
                dw_data.Object.col_data[li_row] = ls_column
            Else
                li_row = dw_column.InsertRow(0)
                dw_column.Object.col_name[li_row] = ls_coltext
   &

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值