Navicy's .NET

天将降大任于斯人也,必先苦其心智,劳其筋骨,饿其体肤,空乏其身......

统计

常用链接

积分与排名

网站链接

阅读排行榜

评论排行榜

2007年9月11日 #

Dundas for Reporting Services的一些的使用技巧

 如何让Chart的Y轴或2nd Y轴只显示最大值和最小值?
原理很简单,就是设置Y轴的interval是此轴的最大值即可,但是interval是不支持Expression表达式来获取Y轴最大值的,那么就需要在Dundas中写Code来实现。
在Dundas的属性设置窗口中选择Advanced,单击ViewCode按钮,在下拉列表中选择PostApplyData方法,C#实现代码如下:
// Parameter: chartObj     - represents the chart object
chartObj.ChartAreas[0].AxisY.Interval=
chartObj.ChartAreas[
0].AxisY.Maximum-chartObj.ChartAreas[0].AxisY.Minimum;
完成后单击Compile按钮,下方出现Compiled OK后Code即生效,运行Report即可看见效果。

 使用了Series Groups后如果自定义每个Series的颜色或者Maker类型?
当你在Dundas中使用了Series Groups,那个每个添加到Dundas的Series都会依据这它来分组显示。并且分组出来的Series的颜色是Dundas随机定义的。要想修改分组出来的Series的颜色或者其Maker设置,也可以通过在Dundas中写Code来实现。
在Dundas中,每个Series都有一个默认的Name,分别是"Series 1"、"Series 2"...依次排下去。我们只要分别判断每个Series的Name,然后再分别采用不同的设置即可。在Dundas的属性设置窗口中选择Advanced,单击ViewCode按钮,在下拉列表中选择PrePaint方法,C#示例Code如下:
// Parameter: chartObj     - represents the chart object
// Parameter: sender       - the chart object that will be painted

if
( sender is Series ){

    Series series 
= (Series) sender;
        
    
switch(series.Name){
           
case "Series 1":
              series.Color=Color.LightYellow;
              series.MarkerStyle
=MarkerStyle.Diamond;
              
break;
           
case "Series 2":
              series.Color=Color.Red;
              series.MarkerStyle
=MarkerStyle.Square;
              
break;  
    }
}

完成后单击Compile按钮,下方出现Compiled OK后Code即生效,运行Report即可看见效果。
如果Series出现的顺序不固定,那么我们还可以通过LegendText来判断Series。LegendText的值是在Series Groups中用来group的那一列的值。我们可以用switch(series.LegendText)来判断。

posted @ 2007-09-11 18:11 Navicy 阅读(595) 评论(0) 编辑

发现 SQL Server 2005 Reporting Services 的一些BUG

1. Float 参数的BUG
当你在Report中设置某个参数类型是Float时产生此BUG,Reporting Service在显示Float参数时会出现莫名奇妙的四舍五入成两位小数,索性的是这种错误只停留在显示上,报表的内部运算仍旧按照参数的实际小数位数进行运算。
解决方法是将Float 参数改为string类型,然后在用的时候将参数转换为小数。

2.更新Report,其Linked Report参数不能同步更新
Linked Report虽然使用的是Report的Definition,但是它自己有它自己的参数设置。建立Linked Report时,RS会复制Report中的所有参数给Linked Report一份。此问题出现在当你在报表服务器上使用一个Report建立了Linked Report后,修改此Report的参数,例如添加一个下拉列表值,修改参数类型等等操作,随后使用覆盖Update的方式更新报表服务器上的Report时,其所建立的Linked Reports参数不会自动更新,从而出现参数不同步的现象。
目前此问题暂时没有好的解决方法,比较普遍的做法是删除Report的所有Linked Reports,重新建立,或者逐个修改每个Linked Report的Report Definition,使其Link到更新过的Report。我已经就此写了一个自动查找并更新Linked Report的小工具,需要的朋友可以发Email给我。

posted @ 2007-09-11 17:16 Navicy 阅读(321) 评论(1) 编辑