您的位置:首页 > 其它

水晶报表 分类统计之分组钻取、子报表、数据过滤三箭齐发

2010-08-12 22:38 423 查看
本文的发布是基于之前《水晶报表 分类统计之子报表法》的新需求而写,所以必须先看之前这篇《水晶报表 分类统计之子报表法》(地址:http://blog.csdn.net/luols/archive/2010/08/09/5797748.aspx),否则将一头雾水。。

我们先看看字典表的数据



通过这个字典表,我们得知当且仅当DICTNO='10051002'或'10052003'时为产品类,其他都属于技术类,由此我们可在主报表新建一个公式,取名group,编辑:
if {TableA.science} = '10051002' or {TableA.science} = '10052003' then
'产品类'
else
'技术类'

然后在主报表按 公式group 分组,同前篇文章一样,在组头节保留组名和汇总字段;
在主报表再插入一个组(按Dictionary.DICTNAME分组),同样在组头2节保留子报表对象和汇总字段,其中子报表的创建同前篇文章一模一样。
设计完后主报表界面应该是这样的(其中组头#2节的斜线部分是到主报表设计工作全部结束后才会显示出来,继续往下看)



主报表设计工作还没结束,还有我们最最关键的步骤,实现分组钻取功能。进入节专家,如图示操作



最后在主报表进行数据过滤,同前篇文章一样,在报表空白处点右键->报表->选择专家,点击“显示公式>>>”按钮,输入:
{Dictionary.COLNAME} in ["10051001", "10051002"]

至此,主报表设计工作才算结束

子报表设计同前篇文章一样,仅仅修改里面的公式Condition即可,修改如下:
if {?Pm-Dictionary.DICTNAME} = '技术a' then
'10052001'
else if {?Pm-Dictionary.DICTNAME} = '技术b' then
'10052002'
else if {?Pm-Dictionary.DICTNAME} = '产品a' then
'10052003'

最后代码部分也同前篇文章一样,没做任何的修改

最终运行效果如下:







lixin_pan,由于工作繁忙,现在才给出解答,不好意思,不过这个问题的确值得好好探讨!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: