zoukankan      html  css  js  c++  java
  • SSRS开发的经验记录

    虽然工作经验相当的长,但是之前在SSRS上还没有象今天这样的经验。这只是工作经验的一点记录。

    1. 定义DataSet

       定义DataSet的时后,可以采用Text的方式。用Text的方式可以用一段比较复杂的DB script来做复杂处理。可以在SSMS那里写好DB script,调试好再copy paste到Text框里。Text框和SSMS那里的略有差别,在Text框里,如果一个@xxx形式的变量没有相应的declare, 则会被自动定义成一个参数(成为报表的参数和Query的参数,而且系统自动将这两个参数连接起来)。而这个特性在SSMS里是不存在的。SSMS的数据库脚本要求所有的变量都有declare。所以如果你希望某些变量成为SSRS里的一个参数,再copy paste的时候,可以把这些变量的declare去掉,再拷贝过去。

    2. Custom code

    SSRS是基于VB的。Custom code必须写VB代码。但是这个地方不象Visual studio那里可以进行语法提示。 我们在Visual Studio创建一个VB.net 的工程,可以在Visual Studio写好Function的代码。编译好。再copy paste到Custom code框中。

    调用Custom code中定义的Function, 在报表中写Code.<Functionname>(parameters)

    3. 输出Excel时出现hiding row, merged row

    在网络上找了一下。还是微软官方的一个knowledge page写得比较清楚。默认为inch或者厘米为单位,在设计器里会出现很多小数点后很多位的小数。微软说这是因为转换成excel时,转换器用的是points为单位,除不近时,就会用hiding row来补偿。我们要用points为单位,可以避免hiding row。定义高度和宽度的时候,用10pt,2pt之类的。

    4. 输出Word时选择正确的Page size

    首选在Report property里选择好Page size, 如果是Letter, 宽8.5inch, 高11inch, 定义好白边margin上下左右,比如各1inch, 那么在设计器里,Body的宽度就是8.5 - 1 -1 = 6.5inch, 高度是11 - 1 -1 = 9inch。于是选择Body, 再在属性框里设定其Width, Height。这样设定的报表,输出成Word时就是默认用的Letter纸张。

    5. Subreport could not be shown错误的调试

    Subreport could not be shown可能因为很多原因产生。我们不能简单地认为是某种原因。其实一个最根本的解决办法就是将报表部署到SSRS 服务器上,然后访问报表,当问题显现后,我们可以到SSRS服务器上 C:Program FilesMicrosoft SQL Server#SSRS Instance Name#Reporting ServicesLogFiles目录找到log文件。看log文件里的详细错误信息。这样你就可以知道出现错误的根本原因了。从而针对性的解决。当然了,这个解决办法是针对RDL的,RDLC的报表是无法直接用这个办法的。除非你把RDLC转成RDL。

    6. 一个SQL server Split string的脚本

    在实际工作中用到了这个。存储过程返回的是一个用分割符分割的串。所以这个大量的用这个小巧的方法。

    declare @Input varchar(max)
    set @Input = '9,5,2,4,65,7,89,4,2,3,24,33,98'
    declare @delimiter varchar(max)
    set @delimiter = ','
    declare @sql varchar(max)
    set @sql = 'select ''' + REPLACE(@Input, @delimiter, ''' as stringValue union all select ''') + ''' as stringValue'
    exec(@sql)

    这里用到了replace和union all的主意。比起那些专门写一个function的idea,相对来说轻量一些。

  • 相关阅读:
    npm install报错Error: ENOENT
    hibernate hql
    mysql授权
    撤销git reset soft head操作
    nodejs&npm等概念梳理
    Java类中中文问题
    采用MANIFEST.MF之jar报错ClassNotFoundException解法
    EChart和G2比较
    牛客OI测试赛1
    Codeforces Round #340 (Div.2)
  • 原文地址:https://www.cnblogs.com/mikelij/p/3263873.html
Copyright © 2011-2022 走看看