[分享]Crystal Reports 2008 (设计篇)------- 安装及新建报表文档

黄巧克力 2009-12-02 07:44:20
加精
接触水晶报表已经很长时间了,受了很多恩惠,得到了很多的帮助,感谢阿泰,感谢几位在JAVA运用水晶报表的前辈们!
今天利用一点稀少的空闲的时间把我的研究成果跟大家分享一下。也希望大家看完我的文章,帮我指出我的缺点。废话少说,进入正题。
先从安装水晶报表说起吧,简单介绍一下水晶报表的安装。(专业水晶报表 CrystalReport 2008开发工具)
1. 安装CrystalReport 2008 软件 ,注册成功即可使用。
2.点击“文件”----“新建”----“空白报表”/“标准报表”。

3.弹出以下对话框。

CrystalReport 2008提供了多种数据库连接方式供你选择,你可以根据你的数据库的类型以及你的报表的运行平台的实际情况进行选择,例如你的报表想要在JAVA里面运行并发布到服务器上,采用数据库连接池方式访问管理,你可以选择JDBC(JNDI)连接,如果在我的连接下没有你想要的连接,你可以在创建新连接下找到JDBC连接文件夹双击,弹出创建新的连接,填写连接信息,创建新的连接。然后创建的新连接就会在上方的“我的连接”内出现新进创建的连接
双击展开新创建的连接,弹出本数据源中的所有可用表和视图,你可以选中你想要操作的数据表或者视图,双击添加至右侧“选定的表”列表框。

上述操作完成后,切换至“链接”选项卡:
此时下方列表中就会出现你刚才选中的表的结构,和他的索引信息,如果该表由多个索引将用不同颜色进行标记,并且索引的顺序在右侧索引图例中加以说明。

如果遇到多个表进行关联,则可以手动按住表1的索引字段不放,放到表2的对应索引上松手,就会在两表之间建立两表的连接关系,双击生成的连线,可以清楚的看到当前连接的属性。


注意,为了区分左右链接,水晶报表在拖动索引创建连接的时候,是由顺序的,比如你从表一的A字段拖至表二的B字段建立连接,那么你在选择“左连接”的时候,他会默认为A字段的值完全显示,B 字段的值选择性显示,右连接则相反,也就是说,从A到B的左连接等价于从B到A的右连接,而且都是以前面的表字段为基准。(不知道我的理解对不对,不对的地方请各位网友指正,我已经做好准备挨砖了!!!)

单击“确定”完成数据表的装入。
此时,我们已经完成一个基本的数据库德配置,系统也会自动弹回初始界面,(如果你当时选择的是标准报表向导,则还会继续对显示字段,分组,汇总,排序和界面模版进行设置)。


下面结合实际的运作,介绍一下水晶报表的几个“专家”。
水晶报表的设计思想是基于单元格的编辑来做的,他区别于别的报表的行和列的概念来说,应用起来更为灵活,而且他最大的特点就是在每一个用户设置上,都可以进行代码编程,大到数据的抽取,小到字体和颜色,都可以随心所欲的设置和变换,这就是水晶报表吸引我的地方。
另外,水晶报表的最大特点就是,他将各种操作都分门别类的放在了若干专家中,比如“数据库专家”、“节专家”、“公式专家”、“组专家”、“图表专家”等等,给你的感觉好像是在任何一个水晶角落都可以找到一个专家为你服务。

我们首先看一下,字段资源区域的几个模块,进行一个基本报表的设计。
上图!

众所周知,表,是由行和列组成的,行就是你的数据的条目,我们通过筛选来控制行的变化,列,就是我们要查看的内容,我们的每一行都有特定的列来显示不同的单元格。所以水晶报表给我们的设计界面,是由显示方式不同的行来控制,用户根据需要可以将不同的字段作为列放入不同的行,比如:
报表头区域,在实际显示的时候,仅显示一次,主要放置报表的标题图表和打印等 不需要重复查询的信息。
页脚、页眉区域,就是需要在分页的情况,每页都显示的区域,比如字段的名称,页数
详细信息:是我们的报表数据区域,需要每一条数据循环显示
报表尾区域:在整个文档的尾部显示想要的信息。

所以,我们在报表头区域添加我们报表的标题,在详细信息区域添加数据字段。
具体添加方法:
标题:可以添加一个文本框设置一下显示内容,和颜色、字体等信息。
从数据库字段拖动你想要显示的字段添加入详细信息区域,系统会自动在页眉区域对应添加该字段的字段名称作为页眉,你可以双击页眉中的标题字段进行修改。如图:

因为水晶报表的页面编辑区域适合打印格式相关联,所以他默认的编辑区域只有A4纸的宽度,如果你的字段过长且比较多,你可以考虑将纸横过来或者换成更大的纸张(A3),右键点击报表区域,选择页面设置。

如果你做到这一步,其实已经能够完成一些最简单的报表了,你可以点击工具栏中的预览功能,预览你下你设计的报表样式,绝对的所见即所得。上图!
但是 很有可能系统在显示预览信息之前,需要用户进行数据库登录,这也是我目前为止比较头疼的地方,诸如此类登陆的信息在后面得很多预览操作上,都要输入登录信息验证,这在实际应用中是不合适,希望高手能够帮忙解决一下,就是如何让水晶报表启动后就保持连接不再验证,这是数据连接的过期问题还是水晶报表压根没有记住用户名和密码。

关注中!!!!!!!
连接成功后,报表数据会正常显示。

但是,目前的功能肯定不能各种企业或者用户的要求,这也不能很好的体现水晶报表的强大,如果真的就这么完事了,那真是谁也对不起。
所以我们需要继续往下进行更为复杂的设置。
1:SQL表达式字段:这个字段与数据库字段中的具体字段的区别在于,他可以应用SQL语句中的各种集函数和汇总函数,将已有字段进行加工然后,比如NVL()、 SUM()等函数,都可以在SQL表达式字段中进行编辑,比如我们新建一个SQL表达式字段,进行产品规格的组装,右键—新建SQL表达式字段,弹出公式工作室界面,在右下角代码编写区域填入所要编辑的字段名称(从上排第一个窗口中双击选择),然后选择函数和运算符,该字段直接返回经过计算后的表达式的值,而且可以应用跳转语句(if else ),根据不同的情况显示不同的值。

新建完成后,点击“保存并关闭”,系统会自动检查你的语句是否存在错误,如果错误会提示你即使更正,回到报表编辑主界面,在SQL表达式下面就会出现刚才编辑的字段,拖动使用即可。
2:公式字段:这里面能够应用的公式与SQL表达式中不太相同,感觉他的应用公式好像更多一些,用法是与SQL表达式相同。
例如:新建公式字段“质量等级”,我想在等级为AUB的行项目上加入百分比,就可以添加以下代码:如图

这样数据在显示的时候,会进行区分。

3:参数字段,主要用来设置报表的筛选条件,这个设置将在后面的报表字段全部完成,且分组统计进行后设置。上图!

4、运行汇总字段:顾名思义,本字段要进行对数据的汇总计算,这个字段由于我们报表的需要也将在后面设置。先上图!

后面的工作,我们将要进行分组操作,因为我们的报表要包括两个层面,汇总和详细明细查询,所以主报表呈现的是对原有数据按照几个分类字段进行分组,然后显示他们的数据汇总,点击某个行项目,报表会自动转至明细真实数据。
分组是对某一字段的特征值的分类整理,有助于我们对数据进行合理有效的统计,上图!

选择你要分组的字段,我选择按照前五个字段分组,
结果如图:
分组以后,系统会自动将分好的组放在新添加的留个区域里面,我们需要人为的将他们拖到一个区域,让他们看上去更像一条数据,其余的区域留出的空白,我们右键“抑制显示”,将其在预览中隐藏。上图!

预览一下结果:

是不是比你什么都没做以前的数据更加的清晰实用。我们如果再调整一下他们的对齐方式和字体颜色,效果会更好(你只要会用EXCEL这些操作都没问题,相信你的美工比我要好)。
简单处理后,再上图看一眼,是不是更漂亮了!

献丑了,其实这些修饰性工作最好在你的报表数据设计完全并且测试准确无误后再去做,我提前做的目的是想让列位看官能够提前感受一下水晶的强大,列为看官好继续听我下回分解!




...全文
3990 47 打赏 收藏 转发到动态 举报
写回复
用AI写文章
47 条回复
切换为时间正序
请发表友善的回复…
发表回复
caiqiao133 2012-07-11
  • 打赏
  • 举报
回复
我是个cr 的初学者,使用了它开发java web 项目,使用的oracle服务器连接数据库,页面数据展现没有问题,就是到处打印一直报错,说是出现通讯错误,停止打印,
我使用struts2 框架,而到处打印使用到了一个工具类com.crystaldecisions.report.web.viewer.CrystalReportViewerServlet访问的请求是CrystalReportViewerHandler,但是这个类是用Httpservlet 写的,似乎不兼容struts2
我觉得是这个原因,不知道怎么解决,还请高手帮助
bigheadsheep 2012-05-10
  • 打赏
  • 举报
回复
谢谢楼主,文章不错,不过就是由于保密性的原因,SQL表达式字段和公式字段的示例介绍部分,读起来有些糊涂

不过还是非常感谢楼主的共享精神
xxxx_ys 2011-06-22
  • 打赏
  • 举报
回复
xuexi!!
黄巧克力 2011-06-10
  • 打赏
  • 举报
回复
[Quote=引用 42 楼 kyfvc 的回复:]
怎样把水晶报表2008做的报表运用到vc6.0中呢?
[/Quote]

这个没用过 不知道能不能 不过看水晶和VB的年龄差距 好像不太好办
个人意见
promiseoflife 2011-06-08
  • 打赏
  • 举报
回复
好贴,支持!
Nancy_ 2011-06-07
  • 打赏
  • 举报
回复
怎样把水晶报表2008做的报表运用到vc6.0中呢?
hust_yanyahua 2009-12-08
  • 打赏
  • 举报
回复
路过
agel0ver 2009-12-07
  • 打赏
  • 举报
回复
学习了
何日人再来 2009-12-07
  • 打赏
  • 举报
回复
好用不?
fblgzdq 2009-12-07
  • 打赏
  • 举报
回复
d
Radar2006 2009-12-06
  • 打赏
  • 举报
回复
相当的慢
风斯火 2009-12-05
  • 打赏
  • 举报
回复
强帖留名
zds414866201 2009-12-05
  • 打赏
  • 举报
回复
听说每天回帖获积分?天天回帖,可为什么没有加分呢?
jarvis_java 2009-12-05
  • 打赏
  • 举报
回复
水晶,公司用的那个版本很久,还是全英文的 看了头大 现在用润乾和IReport
shaonew 2009-12-05
  • 打赏
  • 举报
回复
maks
aliasman 2009-12-05
  • 打赏
  • 举报
回复
我在用cr2008时,总是加载数据到报表显示等待时间很长,太慢,请问各位是否有此感觉,可否解决呢
zambertcdsn 2009-12-05
  • 打赏
  • 举报
回复
回复拿分
bzpengyukun 2009-12-05
  • 打赏
  • 举报
回复
学习了!顶
天王 2009-12-04
  • 打赏
  • 举报
回复
路过ip帮顶了
貓哥是個傳說 2009-12-04
  • 打赏
  • 举报
回复
收藏。。

CSDN的收藏跑哪去了
加载更多回复(25)
课程介绍:这是一门Java语言入门课程,针对的是Java初学者或者从事其他计算机语言开发但希望转到Java开发工作上来的软件工程师,是所有想入java之门的朋友首先要学的第一门课,也是整个Java开发的核心和基础,也就是大家常说的JAVA SE版本中涵盖的知识;本门课程将采用 windows平台下的intellij IDEA开发环境作为主要的讲解平台,对于熟悉其他Java开发环境的学友们,当然也可以选择自己熟悉的平台;本门课程希望达到的目标是给大家打语言基础,但不希望一上来给大家太重的学习负担,分阶段,逐步的学习,是更好的学习方式,所以在本门课程中,我们将只涉及到基础的语言,以及面向对象程序设计的一些基础概念,更多的知识和概念我们将放在进阶课程中讲解,这一点望大家知晓;在Java诞生的不到30年时间里,Java开发人员的市场需求已经增长到了一个非常惊人的程度,至少目前来看,没有任何一门开发技术能够和java比,从待遇方面,高级Java开发人员的薪资也是相当的高,大概只有c++能够和Java掰一掰手腕,其他的开发技术的薪资待遇,很难与Java比较。很多想学习java的同学,会有一种困惑,感觉Java知识特别零散,除基本的Java语言外,各种概念、各种框架层出不穷,那我们怎么入学习之门,学到什么程度,能找到什么样的工作,这些问题就会困扰着我们;针对这种情况,我将不断推出一系列的Java课程,通过这一系列的课程,为大家搭建一条比较完整的Java学习链条,我并不准备回答大家“学到什么程度,能找到什么样的工作这种问题“,因为当你学到一定的程度之后,你自然就会找到答案,但有一点可以确定:仅仅学习完本门课程还不够,还需要继续深入学习下去!讲解中所安装的是jdk版本是jdk 12版本,但这并不意味着我们要把这个版本中的所有知识讲解的面面俱到,把最有用、最实用,最能帮助大家加薪的知识挑选出来讲解是老师的重要责任;讲师介绍:王健伟老师,网名:狂想(KuangXiang),1995年毕业于哈尔滨工程大学计算机及应用专业,20多年软件开发经验,经历过数十个软件项目开发包括网络通信、网络安全、网络游戏等领域,多年的摸爬滚打使自身具备了极其深厚的开发实力和实战经验。深圳知名网络安全公司安络科技(www.cnns.net)有限公司创始人之一、中国首套网络安全在线扫描评估系统项目负责人,电子工业出版社2003年《Crystal Reports水晶报表设计与开发实务》书籍作者,全球同服独立游戏《冒险之路》制作人。在教学上,老师自带讲课天赋,善于用最清晰、最通俗的语言把复杂问题简单化,让你听了就能懂,当节学完基本就能掌握,老师能够为你节省大量的学习时间并能达到极好的教学效果!

4,816

社区成员

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

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