导航
  • 全部
...

【原创】水晶报表:交叉表页内自动“换行”

阿泰 2009-04-22 12:33:58
加精
本文同步发布于:
http://www.cnblogs.com/babyt/archive/2009/04/19/1439348.html

使用交叉表时,会遇到这种情况:

列非常多,行非常少,结果页面会自动分页。
(如果行非常多的话,页面比较饱满,一般也不需要特殊处理了)

于是出现了一页上只显示几行,却显示成很多页的情况。既不好看,又浪费纸张(如果打印的话)
问题产生了,能不能将这个换页的动作,限制在同一页上呢?
===========================================================
假设我有这样一个表,有两个字段: GSMC 公司名称 、 BMMC 部门名称。
 
用交叉表实现每个公司部门数目的纵向显示,一般我们会作出来这样的一个效果。
 
 

黄的标注的部分,就是换页的部分。
我们现在就以这个为样版,来做一下改造。

基本思路是:
将数据进行处理,现在一共有41个公司级别的数据,也就是有41个列。
我们要实现每10个做为一个换行,也就是会分为10,10,10,11四行。
交叉表是不能主动换行的,我们用分组来实现一个模拟换行。


那么,怎么要能分成4组呢?
注意:本文使用Oracle数据库完成。
1:首先整理数据,将原来的很多条,整理成41条汇总数据。

并且,根据我们的需要,进行编号。

2:以此为基础,制作一个新的普通报表。

 
3:做一个公式myGrp:

这个是关键,大家注意到,我们把每10个,切为一个标志位。
以公式myGrp进行分组

那么分组出来的数据如下图所示

好,我们就以这个为基础,做交叉表。
4:在组页眉上插入交叉表,抑制显示掉其他的节,如下图所示

ok,雏形就出来了。

至此,基本思路就实现完毕了,但是不好看,对吗?那进一步处理一下吧。
5:删除掉“组标题”,点中交叉表,在交叉表专家中,点“格式化网格线”,进入格线设置界面
 

设置最外面的几个边线的颜色为白色。 

设置完后,预览界面是这样的 

继续,点中交叉表,设置交叉表格式,设置其四个边都为“单线”
 

然后,再看,是这个样子吗?
 

后记:
1:本文并不是一个通用性的解决方案,仅对部分案例有效,希望大家能吃透这个原理。做更好的发挥。
2:我相信可能其他工具有更好的解决方法
3:即使用水晶报表,可能也有更好的方法。

...全文
给本帖投票
2616 55 打赏 收藏 转发到动态 举报
写回复
用AI写文章
55 条回复
切换为时间正序
请发表友善的回复…
发表回复
LSHSQR 2011-08-15
  • 打赏
  • 举报
回复
您好!能请假您一问题吗?我用的是水晶报表。我已经做了一个公式,但是不知道如何使用公式分组?
mac1106 2011-01-12
  • 打赏
  • 举报
回复
谢谢,学到新东西,只是做的过程中,有些还不是不明白。
gaoping85 2010-07-19
  • 打赏
  • 举报
回复
我怎么看不到图片呢
storm_1984 2010-01-18
  • 打赏
  • 举报
回复
学习了,顶
永不言弃SUN 2009-12-15
  • 打赏
  • 举报
回复

每天回帖即可获得10分可用分!小技巧
kongfh 2009-08-28
  • 打赏
  • 举报
回复
我目前遇到一个棘手的问题,一张报表有40多列,但是行比较少,少于10行。如果将报表设置成横向打印,40列也不能被完全打印下来,而使用的打印纸张须为A4。因此我想在水晶报表布局的时候,将40列折成2行显示,效果如下:
1、通常的方式:

| 列1 | 列2 | 列3 | ... | 列40 |
----------------------------------------
(row 1) 数据1 数据2 数据3 数据n 数据40
(row 2) ... ... ... ... ...

2、我的设想:

| 列1 | 列2 | 列3 | ... | 列20 |
----------------------------------------
(row 1) 数据1 数据2 数据3 数据n 数据20
(row 2) ... ... ... ... ...
| 列21 | 列22 | 列23 | ... | 列40 |
----------------------------------------
(row 1) 数据21 数据22 数据23 数据n 数据40
(row 2) ... ... ... ... ...

不知道有什么办法实现呢?
「已注销」 2009-05-16
  • 打赏
  • 举报
回复
不错,真在学习使用中
阿泰 2009-04-29
  • 打赏
  • 举报
回复
把组页眉的拉低一点,只容纳下交叉表就可以了
yourname386 2009-04-29
  • 打赏
  • 举报
回复
如何控制组与组之间交叉表的空白区域的高度?
也就是让组与组之间的空白不要那么大,那样有些浪费纸
阿泰 2009-04-29
  • 打赏
  • 举报
回复
[Quote=引用 47 楼 minxianlong 的回复:]
Crystal Reports里面Cross-tab的功能其实挺弱的
[/Quote]

确实是,呵呵。不过 CR2008里交叉表得到了一定的增强。
minxianlong 2009-04-29
  • 打赏
  • 举报
回复
Crystal Reports里面Cross-tab的功能其实挺弱的
GT7466 2009-04-29
  • 打赏
  • 举报
回复
up
阿泰 2009-04-29
  • 打赏
  • 举报
回复
。。。

把组页脚放开显示,代码中控制组页脚节的高度即可控制空白的大小。
yourname386 2009-04-29
  • 打赏
  • 举报
回复
如何控制组与组之产间的空白的大小?
悔说话的哑巴 2009-04-26
  • 打赏
  • 举报
回复
帮顶
Jack850703 2009-04-26
  • 打赏
  • 举报
回复
顶,要学习的^^
xiao_fan85 2009-04-23
  • 打赏
  • 举报
回复
我算阿泰的粉丝了
yourname386 2009-04-23
  • 打赏
  • 举报
回复
老大就是利害!
ai_li7758521 2009-04-23
  • 打赏
  • 举报
回复
好文,学习
lxf88071332 2009-04-22
  • 打赏
  • 举报
回复
mark
加载更多回复(34)

4,819

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部