0
点赞
收藏
分享

微信扫一扫

SQR与JasperReport

飞进科技 2022-04-19 阅读 68
java

一、SQR:
SQR(Structured Query Reporter)是为从数据库管理系统生成报告而设计的一种编程语言。
1、SQR 语言程序结构:
!描述了报表的总体特征:

begin-setup
    !For IBM LP4037 5E : PCL 4 emulation landscape, 12-Pitch Font , set 6 lines/inches  打印机(IBM LP4037 5E)的初始化
    printer-init <27><69><27><38><108><49><79><27><38><107><52><83><27><38><108><54><68>
    use scis_og     ! 使用数据库数据
    page-size 43 137    ! 设置 页面尺寸为43*137列
end-setup

!报表主要程序:即报表的一个执行顺序

begin-report
   !设置编码
    encode '<27><69>' into $printer_reset
    ! let:设置变量
    let #form_feed_line     = 43
    ! do 执行方法/程序  get_parameters用户自定义名称
    do get_parameters
! print 打印输出  (+2,1,10): 空两行,从第1列开始,长度为10
! center: 居中,fill:长度不足,补全
    print '********** END OF REPORT **********'     (+2)     center
end-report

!执行方法/程序 get_parameters
begin-procedure get_parameters
! 以下方法内容,在执行的方法/程序中可有可以无根据具体情况而定
! 判断 或用 or 且用 and &printdata_already 自定义变量

     if $printdata_already = 0 or $printdata_already = 1
       ! 编写判断体内容
    else
        ! 编写判断体内容
end-if
! 循环
while #li_bb_cnt < 10
       ! 编写循环体的内容
end-while

!判断一个变量与一系列值中某个值是否相等,类似于Java的switch case语法

 evaluate 参数
   when = '值1' 
      !编写处理程序
      break
   when = '值2'
     !编写处理程序
      break
   when-other
     !编写处理程序
  end-evaluate

!执行查询

  begin-select
    !该查询中可有定义参数或执行do,查询语句不需要添加select关键字
    !先执行查询,在执行相关的let和do方法
    !--------------------------------------------------------
    ! begin-select
    !   distinct a.case_type    &tmp_case_type,
    !   let $l_case_type = &tmp_case_type
    !
    !     do get_pat_demographic
    !
    !   from caseInfo a
    !   where caseDate = $in_caseDate
    !   order by case_no 
    ! end-select
    !
  end-select
end-procedure

!指定了在报表每一页的页眉
begin-heading
 !编写相关内容
end-heading

、

!指定了在报表每一页的页脚

begin-footing
 !编写相关内容
end-footing

!文档段落允许您编写自由格式的文本

! position 即: (1,1) 文档开始页上的位置。可以固定或相对于当前位置
begin-document position
  !段落
.b
   !编写相关文档内容
end-document

!编写执行SQL语句,
!该段落可以位于BEGIN-PROCEDURE、BEGIN-SETUP或BEGIN-PROGRAM中
begin-sql
  !编写具体的SQL语句
end-sql

部分语法:
函数名称 说明 示例

isnull	是否为空。	isnull(parameter)
print	打印输出(具体用法看程序结构内容)	print '-'  ( , 1, 15 ) fill
let	赋值	let parameter = 1
do	执行方法程序	do get_pat_demographic
move	移除	move &hosp_cde to $hospital_cde
||	字符串拼接	let parameter = ‘test_’|| parameter
!	注释	!编写相关内容

!将日期函数转换为字符串,格式:dd/mm/yy
!具体日期格式对照:  https://www.cnblogs.com/shuilangyizu/p/6677390.html

2、SQR语句于报表对应示例
在报表中的显示输出以 print 关键字
打印标题信息:
在这里插入图片描述

执行报表内容查询,并将查询的结果放到变量中
在这里插入图片描述

打印查询结果出来的变量信息
在这里插入图片描述

打印报表统计结果:
在这里插入图片描述

打印报表的最后结束内容:
在这里插入图片描述

二、JasperReport:
是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,或者XML格式。该库完全由Java写成,可以用于在各种Java应用程序,包括J2EE,Web应用程序中生成动态内容。
Eclipse安装JasperReport插件:https://blog.csdn.net/QIANG_HAO/article/details/103940377/
JasperReport简易入门教程:
https://blog.csdn.net/dullchap/article/details/51799070
JasperReport入门教程:
https://www.cnblogs.com/xyyz120/category/1695447.html
1、JasperRepor开发步骤
第一步:新建JasperReport
在这里插入图片描述

选择空白的A4页面进行创建报表的模板
使用无数据的空表信息创建
在这里插入图片描述

报表的保存路径为:cms-cms-obscis-ip-war\src\main\webapp\obscis\inpatient\reports\jasper\ogReport 文件夹下

报表的统一命名为:原SQR报表的名称,若可以合成同一份的则使用SQR报表的名称去除医院的简称,如下:
原SQR的报表为 og6001kwh.sqr、og6001pmh.sqr 若可以合成同一份则命名为:og6001.jrxml 若不能合并的则还是使用og6001kwh.jrxml

创建后可以看到如下的界面(附各模块生成的模板解析说明)
在这里插入图片描述

第二步:填充栏位
根据报表,拉取相关组件到可视化报表内容中,根据相关的显示要求放置在对应的栏位中
在这里插入图片描述

注意事项:
Detail是打印Field字段的区域,一个报表可以有多个Detail,在Detail上右键可以通过Add Detail Band来增加新的Detail区
Detail会把传递进来的list的数据,循环打印出来,有多条就会打印多行,一页打印不下就会从下一页继续打印
如果通过Detail来打印表格,Detail的高度最好和要打印的Field高度一样,这样每行就不会有缝隙,打印出来和表格一样的效果
如果存在多个detail,他们是交替打印

固定内容的lable文件用
相关内容的修改则在属性区域进行修改,在该区域配置具体的内容

在这里插入图片描述

而样式则在Advanced中进行修改

在这里插入图片描述

动态显示的文本内容用在这里插入图片描述

相关内容的修改则在属性区域进行修改,在该区域配置具体的内容
在这里插入图片描述

动态文本的内容有参数、验证值、其他等的可以点击
来具体配置:
在这里插入图片描述

获取系统当前时间:new SimpleDateFormat(“dd/MM/yyyy”, Locale.US).format(new java.util.Date())

新参数方法配置:
在这里插入图片描述

在参数属性设置中可有修改新建的参数名称和类型
在这里插入图片描述

Variables内置变量

Variable 名称	说明
PAGE_NUMBER	它包含当前页的页。
COLUMN_NUMBER	它包含当前的列数。
REPORT_COUNT	当前的记录数目
PAGE_COUNT	当前的页号
COLUMN_COUNT	当前的列号
MASTER_CURRENT_PAGE	主报表当前页
MASTER_TOTAL_PAGES	主报表页数

第三步:配置JavaBean
配置JavaBean作为数据源的开发方式如下:
(1)需要先创建一个JavaBean
(2)创建一个Collection of JavaBeans
(3)配置DataSet,点击如下按钮:
在这里插入图片描述

选择我们报表所需要的JavaBean,引入到我们的JasperReport报表中
在这里插入图片描述

第四步:预览(可跳过)
preview -> 填写配置的参数 -> 运行
在这里插入图片描述

第五步:在Java程序代码中调用报表
报表中分为两部分一部分为参数(parameter),一部分为数据显示的明细列表(Detail)
参数prameter是一张报表中全局的属性,可以在报表的任何地方显示,而Detail部分我们使用List来传值,同时在报表的Fields中配置相关的字段信息。
Java代码的调用方式如下图:

在这里插入图片描述

2、OBSCIS JasperRepor开发步骤
第一步:制作JasperReport模板
(1)根据原SQR生成的报表样式图表,制作相应报表的JasperReport模板
(2)报表的保存路径为:cms-cms-obscis-ip-war\src\main\webapp\obscis\inpatient\reports\jasper\ogReport 文件夹下
(3)报表的统一命名为:原SQR报表的名称,若可以合成同一份的则使用SQR报表的名称去除医院的简称,如下:
原SQR的报表为 og6001kwh.sqr、og6001pmh.sqr 若可以合成同一份则命名为:og6001.jrxml 若不能合并的则还是使用og6001kwh.jrxml

第二步:SQR 改写为JAVA实现
(1)将SQR报表中的SQL语句迁移至Java的DAO层进行实现
(2)将SQR报表中的SP(存储过程)转换为Java代码实现
(3)将SQR报表中的逻辑处理转换为Java代码实现
3、JasperRepor使用技巧
报表虚线设置
在这里插入图片描述

字段为空设置不显示
使用表达式设置相关列为null值时显示为空

在这里插入图片描述

举报

相关推荐

0 条评论