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_sqlstring error_syntaxfromSQL, error_createstring ls_syntaxlong ils_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 -1ELSE dw_1.Create(ls_syntax, error_create) //dw_1就是你要显示数据的数据窗口 IF Len(error_create) > 0 THEN messagebox('', '建立数据存储时发生错误!~r~n错误原因:' + error_create) return -1 END IFEND IFdw_1.retrieve()
[解决办法]
使用动态数据窗口技术
涉及到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. 创建数据窗口