SSRS开发的经验记录

虽然工做经验至关的长,可是以前在SSRS上尚未象今天这样的经验。这只是工做经验的一点记录。sql

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框中。ide

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

 

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

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

 

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 Files\Microsoft SQL Server\#SSRS Instance Name#\Reporting Services\LogFiles目录找到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,相对来讲轻量一些。

相关文章
相关标签/搜索