ReportServies 报表开发心得

来源:互联网 发布:手机隧道测量软件 编辑:程序博客网 时间:2024/06/11 08:00
    微软sql server 系列自带的报表开发给开发人员开发报表带来了很大的方便。利用sql server 自带的商业智能模板开发报表,可以让程序员写一些sql语句,就可以开发出功能强大的报表。
    具体的开发细节问题,大家可以看msdn上帮助,上面关于自定义报表的开发描述的很详细,而且如果你完全按照sql server 数据库,也会带相应的Resports示例。但是如果你想开发出更好的报表,还需要自己摸索一番,下面是我在开发报表中总结出来的一些经验,希望对开发报表的新手会有些帮助。

  1:共享数据源问题,如果你的报表只是用于ResportView显示,利用共享数据源会很方便,但是如果你的报表是发布到微软CRM3.0上,共享数据源就会有些问题。这里提供一个很好的解决办法,包括利用共享数据源。我们可以给数据库设置一个别名(aliases,具体方法参照SQL SERVER Configuration Manager),这样当我们改变服务器是,只需给sql server 服务器加上一个别名,就可以轻松解决部署问题。

  2:报表参数,当报表绑定数据源时,产品会自动加上参数,参数类型和数据库中的类型一致,如果想更改参数类型,如隐藏,是否必输项等,可以在报表>>报表参数里修改;若是子报表,可以把子报表的参数设置为内部,在父报表调用子报表时,传递参数给子报表。
 
  3:子报表,可以用子报表控件。我们这里讨论的是报表链接形式。和其他网页一样,当用户点击某一条记录的明细记录时,会跳转到该明细的子报表上。具体方法是,在某一字段上点击属性>>导航>>调至报表>>选择子报表的名称,可以选定参数等。这里两点需要注意,一是参数名称必需和子报表参数的名称一至,而是跳至报表的名字问题,如果你发布到Resports上去,子报表不可更改其名字,否则会找不到子报表,因大部分子报表只有从父报表中传递显示,可以设置Resports上子报表的属性为隐藏。

   4:矩阵问题,相信大家在报表开发时很多情况都有交叉表问题,即我们所说的矩阵,矩阵的用法比较复杂些,在这里我想说的矩阵中的合计问题,有时候无论你怎么选择小计,就是不小计,问题就在于你的小计内容里的每一项没有加SUM()函数,这个问题很奇怪,不知微软为什么这么搞。

  5:报表常用函数,
  1. IIf(Logical_Expression, {Expression1, Expression2})     If Expression1 and Expression2 are specified, and 
    Logical_Expression evaluates to true, the IIf function
    returns Expression1. Otherwise, the function returns Expression2.
  2. Format()  格式转换
  3. sum()   合计值
  4. RowNumber(Nothing)  自增列序号显示
   6:最重要的问题还是在数据库中的操作,这里面设置到数据库知识就比较多了,如存储过程,动态sql等,我们就不在这里多说了。

     希望这些对初开发人员有些帮助,这些内容也都是我自己在第一次开发报表中遇到的一些实际问题。