转自 阿泰的软件实用主义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:我相信可能其他工具有更好的解决方法
          

posted on 2010-01-28 21:47  湛然常寂  阅读(202)  评论(0编辑  收藏  举报