水晶报表隐藏空值字段
来源:互联网 发布:mac 如何装office 免费 编辑:程序博客网 时间:2024/06/05 18:45
前提: VB 2005 + 内置的Crystal Report + SQLServer 2008
今天处理几张报表,一个人可能属于几个公司,在公司里的头衔还不一样,所以在一张表里,放了: org1, org2, org3, org4及title1, title2, title3, title4(其实就不要计较为什么不另外加一个表专门来存放这些公司的信息了,因为是老程序,不可能把结构大改,用户要什么,就给他们加,用最简单的方式加),要在水晶报表里显示所有信息,要求没值的就不显示,不然会占据空间,打印出无用的行来,而且大部分的人,都只属于一家公司,极少部分最多两家公司,然后,再然后,就更少更少,都打印出所有所属公司的标题,又没有内容,一是占地方,二是难看。其实主要难点就是,字段前面还包含 Label,等于是前面的Label也不能显示。
比如:
-------------------------------------------------------------------------------------------
Organisation 1 : XXXXXXXXXXXXXX Title 1 : XXXXXXXXXX
Organisation 2 : XXXXXXXXXXXXXX Title 2 : XXXXXXXXXX
Organisation 3 : XXXXXXXXXXXXXX Title 3 : XXXXXXXXXX
Organisation 4 : XXXXXXXXXXXXXX Title 4 : XXXXXXXXXX
--------------------------------------------------------------------------------------------
因为大部分人都只属于一家公司,这样的显示就比较浪费纸张了:
-------------------------------------------------------------------------------------------
Organisation 1 : XXXXXXXXXXXXXX Title 1 : XXXXXXXXXX
Organisation 2 : Title 2 :
Organisation 3 : Title 3 :
Organisation 4 : Title 4 :
处理方式主要有几种。
1. 如果每个条信息占一行,就比较容易处理。
在水晶报表层面,把可能要隐藏的行,毎行做成一个section,和别的内容同级,然后,打开 section expert,选择你要处理的行(即所属的section),在 common页签处,勾上”Suppress(No Drill Down)",然后,再点右边的公式,就是那个有 x-2和一支笔的按钮,把当什么情况时要进行隐藏的条件设置就OK了,一般我用的是basic的语法,不用crystal的语法。
2. 如果信息分左右(左边显示基本的个人信息),右边显示详细信息,这个就有点麻烦。哦,题外话,如果水晶报表要显示的字段信息是长度不固定的,记得要对字段设置“Can grow”。
其实具体情况具体分析了,象我碰到的这种情况,我是想了个可能也是取巧,也可能是笨的方法,看你怎么看了。因为数据是通过存储过程取数,所以就想了个办法,把结果先在数据库层面进行判断,进行数据的拼接,这样就可以显示有数据的字段。
2.1 先把原来的结果放入一个临时表中,用“ select * into 临时表 from XXXXXX' 创建临时表
2.2 ,然后把这几个字段直接打包成一个字段,在水晶报表里直接显示这个字段的内容即可。对临时表的相应字段进行判断,并可以加入Label(题头),排版(主要是用char(13)进行换行,char(9)添加制表符),进行打包,代码示例:
select @sql = 'select *
, ISNULL( ''Position 1 : '' + char(9) + char(9) + Title1,'''')
+ isnull( char(13) + ''Organisation 1 : '' + char(9) + Org1,'''')
+ isnull( char(13) + ''Position 2 : '' + char(9) + char(9) + Title2,'''')
+ isnull( char(13) + ''Organisation 2 : '' + char(9) + Org2,'''')
+ isnull( char(13) + ''Position 3 : '' + char(9) + char(9) + Title3,'''')
+ isnull( char(13) + ''Organisation 3 : '' + char(9) + Org3,'''')
+ isnull( char(13) + ''Position 4 : '' + char(9) + char(9) + Title4,'''')
+ isnull( char(13) + ''Organisation 4 : '' + char(9) + Org4,'''') as Orgs
from ' + @cTmpTable
exec sp_executesql @sql
select @sql = ' drop table ' + @cTmpTable
exec sp_executesql @sql
- 水晶报表隐藏空值字段
- 水晶报表编程(隐藏空值字段 )的一个bug及处理方式
- 水晶报表动态加载字段
- 用户自定义水晶报表字段
- 水晶报表字段自动换行
- 水晶报表字段拼接显示
- 水晶报表中动态加载报表字段
- 水晶报表公式化字段,自定义报表
- 怎样在水晶报表里判断是否是空值(水晶报表 汇总求和 空值 显示为 0.00 的问题)?
- 为水晶报表某字段添加连接
- 水晶报表向参数字段传递参数
- 水晶报表向参数字段传递参数
- 水晶报表中如何动态增加字段
- 水晶报表长字段显示问题
- 水晶报表中如何动态增加字段
- 向水晶报表中的"参数字段"传值
- 水晶报表中如何动态增加字段
- 水晶报表中动态添加字段
- SQLServer 存储过程处理超长字符串问题
- apache2.2和php5.4.2在windows下的安装
- 关计算机发展方向
- PHP下载xml源文件并转码解析
- 进程和线程
- 水晶报表隐藏空值字段
- LeetCode(44)Permutations
- 手动添加mysql服务
- SD佛山ZD风
- oracle导入导出数据不完整问题
- Leetcode wild card matching
- python复习笔记
- 打架后
- 广义Fibonacci数列找循环节