在线报表FineReport中多数据集如何实现层式报表

 时间:2024-10-12 21:41:05

1、新建模板新建模板mutipage.罕铞泱殳cpt,为了加快展示速度,我们可以使用分页查询,获取每个产品的详细信息矣喾动痞并计算产品对应的订单中的应付金额,因此添加数据集时查询SQL语句为select 产品.产品ID,产品名称, 供应商ID , 类别ID, 单位数量, 产品.单价, 产品.库存量, 产品.订购量,sum(应付金额) as 应付款项 from 产品,订单,订单明细 where 产品.产品ID=订单明细.产品ID and 订单明细.订单ID=订单.订单ID and 产品.产品ID between 10*(${page}-1)+1 and 10*${page} group by 产品.产品ID,产品名称, 供应商ID , 类别ID, 单位数量, 产品.单价, 产品.库存量, 产品.订购量 order by 产品.产品ID,设置参数page的默认值为1,首次看到的是第一页,只查询出第1~20条记录;若page参数为2时,查询出第21~40条记录,即第二页内容。注:这边定义报表每页显示10条数据,即ds1的查询SQL一次只取10条数据,从而加快报表展示速度。

2、自定义上一页、下一页按钮使用分页查询后,报表需要根据page参数查询出行号在一定范围内的数据,当点击下一页时,page需要加1并传入报表查询出后10条记录;点击上一页时,page需要减1并传入报表查询出前10条记录。而报表内置的上一页下一页按钮无法做这些操作,因此需要自定义上一页下一页按钮。在单元格中求出上一页、下一页页码的值在工具栏中无法直接获取page参数的值,因此先在单元格中求出上一页下一页的页码值,然后再在工具栏按钮中获取单元格的值。

在线报表FineReport中多数据集如何实现层式报表

3、自定义上一页下一页按钮点击模板>模板web属性>分页预览设置分,选择为该模板单独设置,在工具栏中增加两个自定义按钮分别命名为上一页,下一页,是工具栏上只剩下如下图所示几个按钮。

在线报表FineReport中多数据集如何实现层式报表

4、第一页与最后一页的处理首次访问报表时,默认显示第一页page=1,此时上一页按钮应该是无效的,否则点击上一页按钮时(页码为0),此时查询行号在-9到0之间的记录将会出错;同样,显示到最后一页时需下一页按钮无效。即当上一页页码page-1=0时,上一页无效;当下一页页码page>总页数时,下一页无效。求出总页数根据总记录数及每页显示条数,求出总页数。新增数据集ds2,SQL语句为:SELECT count(*) as 总数 FROM 产品,查询出产品表总条数,拖入单元格,如下

在线报表FineReport中多数据集如何实现层式报表

5、双击总数所在单元格弹出数据列设置对话框,选择高级>自定义显示,在自定义中填入公式:roundup($$$/10,0)求出总页数。将第一行的行高设置为0,或者是隐藏:

在线报表FineReport中多数据集如何实现层式报表

6、上一页按钮设置:选中上一页自定义按钮,点击自定义JavaScript,在js中填入:var pag髫潋啜缅e= $("tr[tridx=0]","div.content-container").children().eq(0).html(); if(page==0)//如果报表显示第一页,则上一页不可用this.setEnable(false);elsewindow.location.href="${servletURL}?reportlet=doc/Advanced/multipage.cpt&page="+page;注:第一句是获取上一页页码(A1单元格)的值,其中最后的html()可以用Text()代替;第二句是重新加载报表并给page参数赋值。

7、上一页按钮设置:下一页岳蘖氽颐按钮设置与上一页的js差不多,只需要获取B1的值就可以了,所以在js中填入:var page= $("tr[tridx=0]","div.content-container").children().eq(1).html(); var total=$("tr[tridx=0]","div.content-container").children().eq(2).html(); if(parseInt(page) > parseInt(total))//如果报表显示最后一页,则下一页不可用{this.setEnable(false);}elsewindow.location.href="${servletURL}?reportlet=doc/Advanced/multipage.cpt&page="+page;注:首次打开报表的时候,由于page参数是在数据集中定义的,数据集参数的默认值在第一个次打开报表时没办法传到单元格中,所以需要定义一个完全一样的模板参数page,默认值设为1。这样,首次打开模板时,上一页按钮同样不可用。

8、分页预览,即可查看效果。

在线报表FineReport中多数据集如何实现层式报表
  • excel中使用vba计算指定间隔月后的日期
  • excel报表工具FineReport之图表显示不出来
  • 报表控件FineReport中如何查询某段时间内的数据
  • 报表分析工具FineReport中Excel导出的多种方式
  • 如何使用FineReport报表工具设置选项卡控件样式
  • 热门搜索
    关于森林防火的手抄报 语文手抄报内容大全 一年级手抄报内容 二年级安全手抄报 安全健康手抄报 手抄报简单 讲文明手抄报内容 文明安全手抄报 熊猫手抄报 消防安全手抄报知识