博计报表中巧用参数实现交叉表行列互换

博计报表在发布到web页面后,其样式就被固定了,如果想把报表换种形式展现,通常的做法是重新设计一张报表模板来实现。下面介绍一种简单方法来结局这种需求。

实现思路
1. 设计单元格表达式根据参数不同而变化,从而实现样式跟随表达式变动。
2.点击一个超链接按钮通过url强制传参给报表中的单元格,从而控制报表的样式。

首先来看这样一张报表(bonzer\webroot\reportFiles\1.基础报表\交叉报表.raq),在页面上的展现效果如下图:

这是一个多维交叉分组报表,上表头是地区/城市,左表头是日期。

如果想动态改变一下报表的样式,左表头变成地区和城市的分组展现,上表头变成年份和月份的分组展现,并且只通过一张报表,这就需要用文章标题中提到的:利用参数实现行列变换的方法了。

本文以此报表为基础,实现可以行列互换的功能(上表头和左表头互换),使得报表在web页面上样式改变。

第一步:设计器中选择配置-参数

给报表增加一个参数,我们把这个参数叫做转换参数,顾名思义,这个参数就是控制行列转换用的。


第二步:修改单元格表达式,让单元格接受参数

我们把C2单元格的表达式修改为:
= if(@arg1==”1″,ds1.group(year(OrderDate),false,OrderDate!=null)+”年”,ds1.group(ShipRegion,false,ShipRegion!=null))
此表达式的意思是:当参数arg1的值为1时,C2单元格的表达式为ds1.group(year(OrderDate),false,OrderDate!=null)+”年”,否则默认为ds1.group(ShipRegion,false,ShipRegion!=null)
关于博计报表中if()函数的用法请参考博计帮助文档中的相关介绍。
据这个逻辑,依照地区与城市之间的关系,年份和月份之间的关系,把单元格的表达式做如下修改:
C3:= if(@arg1==”1″,ds1.group(month(OrderDate),false)+”月”,ds1.group(ShipCity,false))
A4:= if(@arg1==”1″,ds1.group(ShipRegion,false,ShipRegion!=null),ds1.group(year(OrderDate),false,OrderDate!=null)+”年”)
B4:= if(@arg1==”1″,ds1.group(ShipCity,false),ds1.group(month(OrderDate),false)+”月”)

第三步:修改交叉表头并在其中设置超链接

红色框中的交叉表头区是整张报表的关键,既要在行列转换的时候做到文字跟随变化,又要充当转换控制的按钮。
修改此单元格的表达式为:=if(@arg1==”1″,”分布,运货重,时间”,”时间,运货重,分布”)
然后在此单元格的属性中:

加入超链接属性


if(@arg1==null, “/reportBase/reportAspx/showContent.aspx?report=/交叉报表.raq&arg1=1″,”/reportBase/reportAspx/showContent.aspx?report=/交叉报表.raq”)

这个超链接的作用就是点击这个单元格,赋予arg1参数值,然后通过超链接中的url把参数传递到asp中的报表里,通过对参数值的判断,来确定超链接中的url,这样就可以来回转换,防止只能转换一次的情况出现。(超链接也可以设置在其他单元格中,本文中这样做是为了美观且容易理解)
接下来,我们把报表发布到页面上去看效果:


点击设置了超链接的表头单元格后,url自动转换为/reportBase/reportAspx/showContent.aspx?report=/交叉报表.raq&arg1=1,强制把参数arg1=1传给报表的各个单元格,单元格表达式发生变化,报表样式也随之变化,于是实现了行列互换的效果:

此时,如果想转换到前一种样式,只需再点击一次表头单元格即可。
在这个报表中,我们运用了很多颇具技巧性的方法,例如参数结合超链接的运用,if()函数的运用,往往一些看似很复杂的报表,通过一些技巧性的做法都是可以迎刃而解的。

浏览次数:0 ; 发布日期:2010/07/23

热门文章

  • 申请试用授权 - 47,006 views
  • 使用入门教程简介 - 29,477 views
  • .NET报表产品概况 - 26,555 views
  • 联系我们 - 13,381 views
  • 技术支持 - 9,716 views
  • 高效报表设计 - 8,641 views
  • Web报表工具的新起点 - 7,289 views
  • 复杂报表的制作 - 6,751 views
  • Web报表软件的采购成本 - 6,236 views
  • Web报表软件的集成方案 - 4,882 views