首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

PB dw 自动依据选择列汇总

2013-01-06 
PB dw 自动根据选择列汇总我想做个数据分析的通用模板,比如设计个表格“A”,字段分别为“列1,列2,列3,列4,值1

PB dw 自动根据选择列汇总
我想做个数据分析的通用模板,比如设计个表格“A”,字段分别为“列1,列2,列3,列4,值1,值2,值3,值4”。比如用户选择了“列2,列3,值1,值2”,那么DW自动显示汇总的结果(替换成语句为:select 列2,列3,sum(值1) 值1,sum(值2) 值2 from A group by 列2,列3)

怎样根据用户自动选择列DW而显示不同自动汇总的结果,请各位大虾们指点下!
[解决办法]

string ls_sql
string error_syntaxfromSQL, error_create
string ls_syntax
long i
ls_sql = "select 列2,列3,sum(值1) 值1,sum(值2) 值2 from A group by 列2,列3"
ls_syntax = sqlca.SyntaxFromSQL(ls_sql, 'Style(Type=Grid)', error_syntaxfromSQL)

IF Len(error_syntaxfromSQL) > 0 THEN
    messagebox("",'生成数据存储语法发生错误!~r~n错误原因:' + error_syntaxfromSQL)
    return -1
ELSE
    dw_1.Create(ls_syntax, error_create) //dw_1就是你要显示数据的数据窗口
    IF Len(error_create) > 0 THEN
        messagebox('', '建立数据存储时发生错误!~r~n错误原因:' + error_create)
        return -1
    END IF
END IF
dw_1.retrieve()



dw_1中的各列的列名此时为英文的 ,如果有必要,你需要自己modify为中文的
[解决办法]
使用动态数据窗口技术

涉及到pb函数有
1. SyntaxFromSQL
2. create

功能实现
1. 首先你要区分 选择的列的类型 ,是分组列,还是汇总列(或者是选择列时标记是汇总用的,还是分组用的)
   列1,列2,列3,列4  分组列
   值1,值2,值3,值4  汇总列

2. 选择列后,你需要把选择出的分组列 罗列出来 ,拼接成串 X , 类似 列2,列3

                   把选择出的数据列 罗列出来 ,拼接成串 Y , 类似  sum(值2),sum(值3) 

3. 拼接SQL语句 select + X + y from 表 group by X

4. 创建数据窗口

热点排行