日期:2014-05-20  浏览次数:20887 次

[分享]Crystal Reports 2008 (设计篇)------- 安装及新建报表文档
     接触水晶报表已经很长时间了,受了很多恩惠,得到了很多的帮助,感谢阿泰,感谢几位在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、运行汇总字段:顾名思义,本字段要进行对数据的汇总计算,这个字段由于我们报表的需要也将在后面设置。先上图!

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