ImageVerifierCode 换一换
格式:DOCX , 页数:88 ,大小:735.53KB ,
资源ID:26517465      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26517465.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(循序渐进使用润乾报表30.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

循序渐进使用润乾报表30.docx

1、循序渐进使用润乾报表30循序渐进使用润乾报表第一章 入门润乾报表3.0是一套专门面向程序开发人员制作复杂报表的工具系统,润乾报表3.0首次成功解决了复杂中国式报表的格式任意性及关系数据库的关联规律性之间的矛盾,使得用户能够方便简捷地制作自动化的任意报表,实现了报与表的完美结合。 润乾报表3.0采用了纯JAVA技术,设计器和运算器均采用JAVA开发,可以运行在任何操作系统下(Windows,Linux,各种UNIX),支持所有有JDBC接口的关系数据库,支持所有J2EE标准的应用服务器。润乾报表3.0提供报表运算的JAVA类的API调用,可最紧密地和应用程序无缝结合,运算器可采用应用服务器的数据

2、库缓冲池,程序员可自定义参数输入界面与运算器结合。第一节 基本概念单元格我们运行润乾报表编辑器,点击新建报表菜单,即可出现如下界面:我们发现,新建的报表由行列整齐的格子组成,这些格子我们称为单元格,所有的单元格组成了报表。合并单元格我们选中一片连续的单元格区域,点击合并单元格菜单,就把这些被选中的单元格合并成了一个单元格,如下图所示,这个合并出来的新单元格称为合并单元格单元格数据类型我们选中一个单元格,在窗口右边的属性列表中,点击数据类型的属性值下拉箭头,即可看到下拉选项,分别有文字、统计图、图片字段、图片文件,如下图所示。也就是说,单元格里的内容可以是文字、也可以是图片,图片内容可以来自文件

3、,也可以来自数据库中的字段,还可以是统计图单元格属性的属性值和表达式在单元格的属性列表中,大家看到,每个属性都有属性值和表达式两种,这两种有什么区别呢?首先,属性值和表达式是互斥的,定义了属性值,就不必定义表达式,定义了表达式,就不必定义属性值。其次,属性值是在编辑报表时就写死了的,在报表运行时不必经过运算,也不会被改变。例如:你在单元格的背景色的属性值中定义了红色,那么报表运行时,它就是红色,不会被运算,不会被改变。而属性的表达式在报表运行时,会被运算,该属性的最终属性值取决于表达式的运算结果值。单元格数据值1、 文字:选中一个单元格,直接在里面输入文字,这些文字就成了单元格的数据值2、 图

4、片文件:如果单元格的数据类型是图片文件,则在单元格的属性列表的数据值的属性值中,直接敲入图片文件的全路径文件名即可,如下图所示:3、 图片字段:如果单元格的数据类型是图片字段,则在单元格的属性列表的数据值的表达式中,将单元格中的数据值指定为数据集中的某个图片字段即可,如下图所示:如图中所示,数据集ds1的第三个字段是个图片字段,所以将图片字段单元格的表达式设为ds1.#3即可。当然,写成别的数据集表达式,只要结果是个从数据库返回的图片,就可以。4、 统计图:如果单元格的数据类型是统计图,在双击单元格后,会弹出统计图的属性编辑框,如下图所示:在统计图属性编辑框中,编辑完善统计图的各种属性,即形成

5、了统计图。具体的属性介绍,后面有单独的一章讲解数据源数据源其实就是定义报表数据来源的SQL语句,也称为数据集,如果报表的数据来自数据库,那么必须给报表定义数据源。如果报表的数据不是来自数据库,而是常数等,则不必定义数据源。参数报表往往有参数,例如,日报表,当我们希望生成一张日报表时,首先需要向报表传递日期参数,然后报表才会根据我们传递进去的日期参数,生成该日的日报表。我们的报表也有参数,我们的参数有以下几个特征:1、 参数有数据类型2、 参数有缺省值3、 参数有输入格式和最大宽度参数可以在数据源和单元格的表达式中被引用第二节 一张最简单的报表下面我们来制作一张最简单的报表人员信息表:要求输入员

6、工的ID,然后生成该员工的信息表。点击新建,设值参数,参数为员工编号,类型为整数,如下图所示:然后建立数据源,数据源名称为ds1,sql语句为SELECT employee.id, employee.empname, employee.birthday, employee.sex, employee.native, employee.degree, employee.specialty, employee.title, employee.worker, employee.mobile, employee.bp, employee.tel, employee.address, employee.

7、charac, employee.resume, employee.photo, employee.intime, employee.expiretime FROM employee,如下图所示:最后编辑单元格的数据值和表达式,以及单元格的各种外观属性,如下图所示:预览界面如下:第二章 可扩展报表第一节 概念一 横向扩展描述单元格的表达式返回多个数据值时,该单元格可以横向进行复制,复制单元格的数据值依次为表达式的结果数据值,表达式返回几个值,单元格就复制几个,这种现象称为单元格的横向扩展。横向扩展时,下方单元格进行复制,复制时,复制出来的新单元格的所有属性都引用被复制单元格的属性;横向扩展时,

8、上方单元格的宽度进行延展,延展成复制后的所有单元格的宽度总和;横向扩展时,下方的单元格如果从属于高于当前单元格级别的单元格,则该下方单元格也应该延展,而非复制例1:横向扩展 扩展前:B1C1B2C2B3C3 扩展后:B1F1B2F2B3F3例2:下方较高级别单元格延展假设B2是B1的附属单元格,B4也是B1的附属单元格,因此从逻辑上讲,B4至少和B2平级,当B2进行扩展时,B4应该延展,不应该复制B1C1B2C2B3C3B4C4 扩展后:B1F1B2F2B3F3B4F4一 纵向扩展描述单元格的表达式返回多个数据值时,该单元格可以纵向进行复制,复制单元格的数据值依次为表达式的结果数据值,表达式返

9、回几个值,单元格就复制几个,这种现象称为单元格的纵向扩展。纵向扩展时,右边单元格进行复制,复制时,复制出来的新单元格的所有属性都引用被复制单元格的属性;纵向扩展时,左边单元格的高度进行延展,延展成复制后的所有单元格的高度总和;纵向扩展时,右边的单元格如果从属于高于当前单元格级别的单元格,则该右边单元格也应该延展,而非复制例1:纵向扩展A1B1C1A2B2C2A3B3C3 扩展后:A1B1C1A2B2C2A5B5C5例2:右边较高级别单元格延展假设B2是A2的附属单元格,D2也是A2的附属单元格,因此从逻辑上讲,D2至少和B2平级,当B2进行扩展时,D2应该延展,不应该复制A1B1C1D1A2B

10、2C2D2A3B3C3D3 扩展后:A1B1C1D1A2B2C2D2A5B5C5D5二 左主格描述 单元格纵向扩展时,有时候需要跟着被复制的单元格不一定在该单元格的右边,此时,需要对被复制的单元格设置左主格属性。 A单元格纵向扩展时,B单元格被同步复制,此时A单元格称为B单元格的左主格。B单元格称为A单元格的附属单元格。主单元格扩展时,附属单元格被同步复制,附属单元格同行本身的附属单元格也将被复制。复制时,复制出来的新单元格的所有属性都引用被复制单元格的属性; 附属单元格的表达式定义可以引用主单元格的数据值 在实际的报表逻辑中,附属单元格往往是主单元格在同一维上的更细划分,或者是主单元格当前维

11、度的聚集,有时候附属单元格可能是主单元格的标题。例1:附属单元格是主单元格的更细划分假设:A3为A2的附属单元格,A4为A3的附属单元格,A2是A3的左主格,A3是A4的左主格A1B1A2(年)B2A3(季度)B3A4(月份)B4扩展后:A1B12000年第一季1月2月3月第二季4月5月6月第三季7月例2(附属单元格是主单元格的在当前维度的聚集) 假设A3是A2单元格的附属单元格,A2是A3的左主格A1B1C1A2(季度)B2(月份)C2A3(小计)C3 扩展后:A1B1C1第一季1月2月3月小计:第二季4月5月6月小计:第三季7月8月9月小计:三 上主格描述 单元格横向扩展时,有时候需要跟着

12、被复制的单元格不一定在该单元格的下边,此时,需要对被复制的单元格设置上主格属性。 A单元格横向扩展时,B单元格被同步复制,此时A单元格称为B单元格的上主格。B单元格称为A单元格的附属单元格。主单元格扩展时,附属单元格被同步复制,附属单元格同行本身的附属单元格也将被复制。复制时,复制出来的新单元格的所有属性都引用被复制单元格的属性; 附属单元格的表达式定义可以引用主单元格的数据值 在实际的报表逻辑中,附属单元格往往是主单元格在同一维上的更细划分,或者是主单元格当前维度的聚集,有时候附属单元格可能是主单元格的标题。例1:附属单元格是主单元格的更细划分假设:C1为B1的附属单元格,D1为C1的附属单

13、元格,B1是C1的上主格,C1是D1的上主格A1B1(年)C1(季度)D1(月份)A2B2扩展后:A12000年第一季1月2月3月第二季4月5月6月第三季7月例2(附属单元格是主单元格在当前维度的聚集) 假设C1是B1单元格的附属单元格,B1是C1的上主格A1B1(季度)C1(小计)A2B2(月份)A3B3C3 扩展后:A1第一季小计第二季小计第三季小计A21月2月3月4月5月6月7月8月9月A3第二节 一般行式报表说明 假设数据源ds1为:SELECT employee.id, employee.empname, employee.birthday, employee.sex, employ

14、ee.native FROM employee 数据源ds2为:SELECT area.id, area.areaname FROM area 希望生成一张普通的行式报表定义界面各单元格属性A3: 扩展方向:纵向扩展 数据值:=ds1.select(#1)B3: 数据值:=ds1.#2C3: 数据值:=ds1.#3 显示格式(属性值):yyyy-MM-ddD3: 数据值:=ds1.#4显示值(表达式):map(list(1,0),list(男,女)E3: 数据值:=ds1.#5 显示值(表达式):ds2.select_one(#2,#1=value)运行预览界面第三节 交叉报表说明:数据源为:

15、ds1=SELECT customer.customer_id, customer.customer_name from customer ds2=SELECT product.product_id, product.product_name from product ds3=SELECT buy_record.id, buy_record.buy_date, buy_record.product, buy_record.quantity from buy_record WHERE datediff(day,?,buy_date)0 ds3的参数为:buy_date 希望生成一张交叉报表,横向

16、标题显示产品,纵向标题显示客户名称,统计每个客户购买每种产品的总数定义界面:各单元格属性C3: 数据值(表达式):ds2.group(product_id,false) 显示值(表达式):ds2.select_one(product_name,product_id=value)扩展方向:横向扩展A5: 数据值(表达式):ds1.group(customer_id,false) 显示值(表达式):ds1.select_one(customer_name,customer_id=value) 扩展方向:纵向扩展C5: 数据值(表达式):ds3.sum(quantity, id=A5 & produ

17、ct=C3) 扩展方向:不可扩展运行预览界面第四节 分组报表说明假设数据源为SELECT area.id, area.areaname, area.father from area希望生成一张以area.father为分组表达式的分组汇总报表,要求分组字段放在细节区的左边定义界面各单元格的属性A3: 数据值(表达式):ds1.group(father,true,father!=null) 显示值(表达式):ds1.select_one(areaname,id=value) 扩展方向:纵向扩展B3: 数据值(表达式):ds1.select(id,true) 扩展方向:纵向扩展C3: 数据值(表达

18、式):ds1.areaname 扩展方向:不可扩展运行预览界面第二章 报表区域第一节 概念页眉页眉位于页面的最上面,仅仅在打印和打印预览的时候出现,每页都重复。一般用于放置和页面有关的信息。页脚页脚位于页面的最下面,仅仅在打印和打印预览的时候出现,每页都重复。一般用于放置和页面有关的信息。标题区标题区位于页眉和数据区之间,用于放置报表标题,以及一些报表抬头要显示的信息,例如:打印日期、报表单位、金额单位等。标题区的单元格可以引用数据区的单元格的数据,但不参与扩展和复制。表尾区表尾区位于数据区和页脚之间,一般用于放置报表的一些汇总统计信息,以及常在报表表尾显示的一些信息,例如:操作员、操作时间、

19、批注等。表尾区的单元格可以引用数据区的单元格的数据,但不参与扩展和复制。表头区表头区是数据区的一部分,参与数据区的扩展和复制,它和数据区其他单元格不一样的地方在于:分页的时候表头区每页重复数据区数据区位于标题区和表尾区之间,包含了表头区。数据区的单元格可以进行扩展和复制。第二节 定位和拉伸规则说明除了数据区以外,其它区域的单元格不参与单元格的扩展和复制。因此,当数据区单元格因扩展而膨胀时,其他区域的单元格需要有一个定位和拉伸规则。除了数据区以外,其它所有区域的单元格都适用本规则相对表右边位置固定(向右靠拢)描述: 当数据区单元格扩展后,当前单元格向右靠拢,即相对表右边位置固定举例:数据区扩展前

20、:汇总报表日期:2002年数据区扩展后:汇总报表日期:2002年单元格拉伸描述: 当数据区单元格横向扩展后,当前行从右往左第一个不向右靠拢的单元格被拉伸。从右往左第一个不向右靠拢的单元格被拉伸举例:扩展前:向右靠拢汇总报表日期:2002年扩展后:汇总报表日期:2002年位置不变描述: 当数据区单元格扩展后,当前行除了向右靠拢和拉伸外,其余所有单元格位置不变从右往左第一个不向右靠拢的单元格被拉伸举例:扩展前:向右靠拢位置不变汇总报表日期:2002年扩展后:汇总报表日期:2002年空白格优先占用由于数据区的单元格是可扩展的,所以当用户在定义报表时,往往数据区的单元格列数很少,而其他区域的单元格列数

21、很多,此时,数据区的右边会有一些空白格。因此,当数据区的单元格横向扩展时,应该优先占用右边的空白格,然后才执行前面的定位和拉伸规则。如下图所示:空白格,当B3单元格横向扩展时,优先被占用扩展前:汇总报表单位名称:润乾软件公司日期:2002年=ds1.group(#1)=ds2.group(#1)=ds3.sum(#1,#2=B3 & #3=A4)扩展后:汇总报表单位名称:润乾软件公司日期:2002年产品1产品2产品3产品4产品5客户1客户2客户3第三节 一张完整区域的报表说明下面我们来定义一张完整的报表,它具有页眉、标题区、数据区、表尾区、页脚,其中数据区还包含了表头。数据源为:ds1=SEL

22、ECT customer.customer_id, customer.customer_name from customer ds2=SELECT product.product_id, product.product_name from product ds3=SELECT buy_record.id, buy_record.buy_date, buy_record.product, buy_record.quantity from buy_record WHERE datediff(day,?,buy_date)0 ds3的参数为:buy_date 希望生成一张交叉报表,横向标题显示产品,

23、纵向标题显示客户名称,统计每个客户购买每种产品的总数定义界面各单元格的属性运行预览界面第三章 单元格的汇总运算第一节 概念单元格的层次坐标描述: 在进行报表编辑时,单元格尚未进行扩展,为避免混淆,应该对扩展后的单元格进行唯一性定义,这就是单元格的层次坐标表达式规则: 左边的分组格/扩展格 上边的分组格/扩展格 Cellx Lk:lk, Lk-1:lk-1,L1:l1;Lk:lk, Lk-1:lk-1,L1:l1 单元格扩展后的次序,即扩展后的第几个单元格 分组单元格/可扩展单元格 目标单元格,一般为Lk,Lk-1,。L1的附属单元格说明:1、 Lk为分组单元格,或称可扩展单元格,lk为单元格扩

24、展后的次序,即扩展后的第几个单元格,如果不指定lk或者lk为0,则表示为当前格,Cellx为目标单元格,一般为Lk,Lk-1,。L1的附属单元格2、 如果没有左边的分组格/扩展格,光有上边的分组格/扩展格的话,分号不能省略,即写成Cellx ;Lk:lk, Lk-1:lk-1,L1:l13、 如果没有上边的分组格/扩展格,光有左边的分组格/扩展格的话,分号可以省略,即写成Cellx Lk:lk, Lk-1:lk-1,L1:l1;4、 Lk的次序是从近到远的,就是从离当前格最近的扩展格开始的举例:假设:A2,A7单元格由A2单元格扩展而来扩展前:A1B1C1D1A2B2C2D2扩展后:a1b1c

25、1d1a2b2c2d2c3d3b4c4d4c5d5c6d6a7b7c7d7c8d8c9d9b10c10d10c11d11c12d12C2B2:0,A2:0:表示当前格所在当前分组格B2和A2的共同覆盖区域中的所有C2单元格C2B2:1,A2:2:表示第一个B2分组格和第二个分组格A2共同覆盖区域中的所有C2单元格,如上表所示,为c7,c8,c9三个单元格B2B2:0,A2:0:表示当前的B2单元格单元格的位移表达式描述: 报表中常常需要计算同期比、比上期之类的与时间相关的运算,而这些运算往往需要用到下一行的数据减上一行数据,后一列数据减前一列数据,等等,这种涉及到行间、列间的运算,称为位移运算

26、,相关的表达式称为位移表达式表达式规则: 左边的分组格/扩展格 上边的分组格/扩展格 Cellx Lklk, Lk-1lk-1,L1l1;Lklk, Lk-1lk-1,L1l1 偏移量 分组单元格/可扩展单元格 目标单元格,一般为Lk,Lk-1,。L1的附属单元格说明:5、 Lk为分组单元格,或称可扩展单元格,lk为单元格的偏移量,即当前所在单元格的上lk格或下lk格,如果不指定lk,则表示为当前所在的分组格,Cellx为目标单元格,一般为Lk,Lk-1,。L1的附属单元格6、 如果没有左边的分组格/扩展格,光有上边的分组格/扩展格的话,分号不能省略,即写成Cellx ;Lklk, Lk-1lk-1,L1l17、 如果没有上边的分组格/扩展格,光有左边的分组格/扩展格的话,分号可以省略,即写成Cellx Lklk, Lk-1lk-1,L1l1;8、 Lk的次序是从近到远的,就是从离当前格最近的扩展格开始的举例:假设:A2,A7单元格由A2单元格扩展而来扩展前:A1B1C1D1A2B2C2D2扩展后:a1b1c1d1a2b2c2d2c3d3b4c4d4c5d5c6d6a7b7c7d7c8d8c9d9b10c10d10c11

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1