请教动态水晶报表画格线的问题,泰哥请进!

rockyvan 2009-05-27 11:06:11
泰哥,我参考你的两篇博客,自己画了一个“动态”报表。
格线是以字段边框来画的。
不需要的列当然是整列抑制显示。
什么是不需要的列?
假如模板有10列,我只用到8列,那么最后两列就是不需要的列。
请问:最后这两列的抑制显示的公式该如何写?


因为第一行数据是用来写列标题的,列标题是不可能为空的,所以我想到的是:
如果第一行数据为空,那么整列抑制显示。
我先是这么写:
if recordnumber = 1 and isnull({column}) = true then true

但是很快就发现这个公式只对第一行数据有效,不能对整列有效。
如果这么写:
if isnull({column}) = true then true

那么除了把最后两列抑制显示,把其它列里面的空值也抑制显示了,画出来的表格就会“千疮百孔”。

不知道水晶报表里面可不可以定义全局变量,我现在正在往这方面考虑。
...全文
41 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
阿泰 2009-05-28
所有要显示的列,都是在前面的。也就是说,如果你的设计有10列,实际上只要显示8列。
那么这8列,无论是什么情况,都是在这个10列的前面8列。

我的core里面,有数据的列给了数据,而无数据的列,给了一个"".
如果一个字段的值为"",在使用边框的时候,它整个是不显示的,这样一来,因为最后的两列都给了""
所以,最后两列都不显示。
这是个小技巧,呵呵。
不需要任何的公式设置。

当然,如果用公式也是可以的。
其实是这样,传一个参数进去,比如说a, a表示实际的列数。

那么在每个列的抑制显示里,这么写
第一列,第一列一般不要写的,如果第一列不显示,别的也不要显示了,呵呵。如果写,是这样:{?a}<1
2: {?a}<2
...
10:{?a}<10

也就是说,只有当前列序号,大于实际总列数a的时候,该列抑制显示。


回复
rockyvan 2009-05-28
我的core里面,有数据的列给了数据,而无数据的列,给了一个"".
如果一个字段的值为"",在使用边框的时候,它整个是不显示的,这样一来,因为最后的两列都给了""
所以,最后两列都不显示。
这是个小技巧,呵呵。
不需要任何的公式设置。
----------------------------------------------------------------------------------
真是一窍难得!

我开始也注意到""(中间没有空格)是不会显示的,所以我处理Null值的公式字段是这么写的:
if isnull({Column}) = true then " "(中间有空格)
居然让我忘记了这个.
回复
发帖
图表区
创建于2007-09-28

4808

社区成员

.NET技术 图表区
申请成为版主
帖子事件
创建了帖子
2009-05-27 11:06
社区公告
暂无公告