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

阿泰 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:即使用水晶报表,可能也有更好的方法。

...全文
2484 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)
Crystal Reports 9.2 中文版(水晶报表) 下载,,软件版本:9.2.0.448不过现已出了Crystal Reports Professional v9.2.2.634 (c) Crystal Decisions,有足够的空间就提供.这是一个很不错的报表控件,我相信很多朋友都听说过吧!Crystal Reports 用于处理数据库,帮助用户分析和解释重要信息。使用 Crystal Reports 可以方便地创建简单报表,同时它也提供了创建复杂或专用的报表所需的整套工具。 创建所能想象的任何报表 Crystal Reports几乎可以从任何数据源生成您需要的报表。内置报表专家在您生成报表和完成一般的报表任务过程中,会一步一步地指导您进行操作。报表专家通过公式、交叉表、子报表和设置条件格式帮助表现数据的实际意义,揭示可能被隐藏掉的重要关系。如果文字和数字确实不够充分,则用地理地图和图形进行形象的信息交流。 将报表扩展到 Web Crystal Reports 的灵活性并未停留在创建报表这一功能上 ?您可以用各种各样的格式发布报表,包括用 Microsoft 的 Word 和 Excel 发布、通过电子邮件甚至 Web 发布。高级的 Web 报表功能允许工作组中的其他成员在他们自己的 Web 浏览器中查看或更新共享报表。 将报表并入应用程序通过将 Crystal Reports 的报表处理功能整合到自己的数据库应用程序中,应用程序和 Web 开发人员可以节省开发时间并满足用户的需求。Crystal Reports 支持大多数流行的开发语言,可以方便地在任何应用程序中添加报表。 不论您是 IT 行业的站点管理员,还是营销推广经理,也无论您是金融业的数据库管理员还是 CEO,Crystal Reports 都堪称是一个功能强大的工具,它可以帮助每一个人分析、解释重要信息。感谢 revenant 上传!
1 安装方法: 此系统为测试版本,只是一个大体的框架,直接解压缩到c: ewsoft目录下即可,注意只能为此目录,且不能改变其目录结构,在正式版中将提供自动目录搜寻功能。 “newsoft”目录下为源文件。 “my”子目录中为系统的exe文件,双击即可运行。 “lib”子目录为系统存放类文件目录。 2 功能介绍: 对办公用品的购买,领取进行管理。 本系统可以设置用户权限,根据权限可以实现不同级别的操作; 系统初始密码为:超级用户:用户名、口令都为vip 一般用户:用户名、口令都为user 类别添加:添加所购物品分类,如钢笔、笔记本等; 部门添加:添加公司部门,还没有加上,有兴趣的朋友可以自己加上,方法与类别添加一样,表名为bm; 物品入库:采购来的物品应及时入库,若两次采购相同的物品,系统会自动计算其平均价格,并更新购买日期。注:此版本现只能计算平均成本和更新最后采购日期,但当有多个采购员是不能看出到底是谁进的货,有兴趣的朋友可以修改。 领用登记:领用办公用品后,应及时入库登记,系统会自动分摊费用,可以按月、季、年结帐分摊费用。注:设想改为到一定时期(如一个月),自动备份数据,打印报表,交财务分摊费用。 报表打印:可以按年、季、月或自定义一段时期打印报表。 更多功能正在完善中,可以来信与我交流。 3 系统说明 由于时间仓促,系统的详细说明教程还没有写,需要的朋友可以来信索取,等完成后我会发到您的信箱中。 4 意见反馈 由于近期要为公司开发一套办公管理软件(网络版),这是其中一个模块,希望您试用以后能给我一点意见。

4,816

社区成员

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

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