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 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,相对来说轻量一些。
最新文章
- java工厂模式
- Hibernate报错:org.hibernate.ObjectNotFoundException: No row with the given identifier exists 解决办法
- IDEA -14 注册码生成工具
- ios外包公司——技术分享:IOS开发教程
- EF之外键Include() left join
- [Java] SSH框架笔记_S2SH整合步骤
- acdream LCM Challenge (最小公倍数)
- VS2010 C# 调用Web Service .
- 用document.title=“xxx”动态修改title,在ios的微信下面不生效的解决办法!
- 重探 DFT
- 免费SSL证书PK付费SSL证书 花落谁家
- azkaban使用--邮件发送配置
- 花神的数论题(这题...哎。数位dp咋就这么 not naive 呢)
- 调用系统命令之subprocess模块
- 内联汇编中的asm和__asm__
- 【转载】 opencv, PIL.Image的彩色图片维度 &;&; caffe和pytorch的矩阵维度
- hasura graphql-engine集成pgbouncer 连接池工具
- 对象的释放Dispose和Close对比
- 【python】泰语分词器安装
- LTE:EPC
热门文章
- MyEclipse 6.5 代码自动提示功能配置教程
- Mathout
- 解决WordPress后台安装主题、插件图片不显示的问题
- 第12章 纤程(Fiber)
- Unity的物理材质
- Adobe Scout 入门
- linux部署的java应用,浏览器访问时,报域名解析错误
- mongoVUE1.5.3 破解方法
- msg url
- 003医疗项目-关于<;context:property-placeholder location=";classpath:db.properties";/>;的问题