【润乾报表4】分页计算标签autoBig使用介绍

海量数据的清单式列表在读取、展现及导出过程中可能会出现速度过慢、内存溢出、系统死机等问题,润乾提供了分页计算的方式发布报表。我们更多熟悉的应该是使用extHtml标签发布报表,实现分页计算的功能,随着客户需求不断变化,extHtml在有些方面已经显得力不从心,所以今天这里将介绍润乾报表提供的另外一个分页计算标签:autoBig。
简介
        autoBig与传统的extHtml标签的区别主要在于如下几个属性:
dbType="oracle" //新增,数据库类型,取值可参考下表,未知写unknown


dsName="ds1"  //新增,要分页的数据集名称,如果是报表中的第一个数据集,可不指定
totalCountExp="" //总条数表达式,可不写,默认用数据集的SQL
pageCount="10" //每一页的记录数
cachePageNum="5"  //缓存页数
……除startRowParamName和endRowParamName该标签中没有外,其余与extHtml相同
        注意:由于autoBig中不再使用startRowParamName和endRowParamName,所以在报表中也不必再增加起始行参数名startRow和结束行参数名endRow。
        autoBig比起extHtml的有点在于使得totalCountExp不再必需,可以自由使用数据集记录数,这将极大地减少用户在页面计算总记录条数的工作量。
实例
        首先做一张普通的网格式清单报表,如下

在发布报表的jsp中增加如下代码片段:
<report:autoBig
                           name="report1"
                           reportFileName="<%=report%>"
                           dbType="unknown"    
                           dsName="ds1"        
                           totalCountExp=""    
                           pageCount="10"     
                           cachePageNum="5"
/>
        配置reportConfig.xml文件中alwaysReloadDefine为no,启用缓存。此项设置的目的是使得设置的缓存页数cachePageNum生效。
        访问该页面,显示如下

点击下一页,从第一页翻到第六页,并观察后台打印信息:
[2011-04-25 10:13:22] runqianReportLogger : [DEBUG] -现在计算报表autoBig.raq
[Server@1478a43]: [Thread[HSQLDB Server @1478a43,5,main]]: handleConnection(Socket[addr=/127.0.0.1,port=52685,localport=9001]) entered
[Server@1478a43]: [Thread[HSQLDB Server @1478a43,5,main]]: handleConnection() exited
[Server@1478a43]: [Thread[HSQLDB Connection @1f2e95f,5,HSQLDB Connections @1478a43]]: 5:trying to connect user SA
[Server@1478a43]: 5:SQLCLI:SQLPREPARE select count(*) from ( SELECT * FROM订单 )
[Server@1478a43]: 5:SQLCLI:SQLEXECUTE:6
[Server@1478a43]: 5:SQLCLI:SQLFREESTMT:6
[2011-04-25 10:13:22] runqianReportLogger : [DEBUG] -开始生成HTML......
[2011-04-25 10:13:22] runqianReportLogger : [DEBUG] -生成HTML结束......
[2011-04-25 10:13:22] runqianReportLogger : [DEBUG] -报表组生成开始。。。。。
[2011-04-25 10:13:22] runqianReportLogger : [DEBUG] -报表组生成结束。。。。。。
[2011-04-25 10:13:56] runqianReportLogger : [DEBUG] -现在计算报表autoBig.raq
[2011-04-25 10:13:56] runqianReportLogger : [DEBUG] -开始生成HTML......
[2011-04-25 10:13:56] runqianReportLogger : [DEBUG] -生成HTML结束......
[2011-04-25 10:13:59] runqianReportLogger : [DEBUG] -现在计算报表autoBig.raq
[2011-04-25 10:13:59] runqianReportLogger : [DEBUG] -开始生成HTML......
[2011-04-25 10:13:59] runqianReportLogger : [DEBUG] -生成HTML结束......
[2011-04-25 10:14:02] runqianReportLogger : [DEBUG] -现在计算报表autoBig.raq
[2011-04-25 10:14:02] runqianReportLogger : [DEBUG] -开始生成HTML......
[2011-04-25 10:14:02] runqianReportLogger : [DEBUG] -生成HTML结束......
[2011-04-25 10:14:05] runqianReportLogger : [DEBUG] -现在计算报表autoBig.raq
[2011-04-25 10:14:05] runqianReportLogger : [DEBUG] -开始生成HTML......
[2011-04-25 10:14:05] runqianReportLogger : [DEBUG] -生成HTML结束......
[2011-04-25 10:14:08] runqianReportLogger : [DEBUG] -现在计算报表autoBig.raq
[2011-04-25 10:14:08] runqianReportLogger : [INFO ] -开始运算报表,首先取数......
[Server@1478a43]: [Thread[HSQLDB Server @1478a43,5,main]]: handleConnection(Socket[addr=/127.0.0.1,port=52724,localport=9001]) entered
[Server@1478a43]: [Thread[HSQLDB Server @1478a43,5,main]]: handleConnection() exited
[Server@1478a43]: [Thread[HSQLDB Connection @7b4ed7,5,HSQLDB Connections @1478a43]]: 6:trying to connect user SA
[Server@1478a43]: [Thread[HSQLDB Connection @1f2e95f,5,HSQLDB Connections @1478a43]]: 5:disconnected SA
[Server@1478a43]: 6:SQLCLI:SQLPREPARE SELECT * FROM订单
[Server@1478a43]: 6:SQLCLI:SQLEXECUTE:7
[2011-04-25 10:14:08] runqianReportLogger : [DEBUG] -下面开始打出sql
[2011-04-25 10:14:08] runqianReportLogger : [DEBUG] - ds1=SELECT * FROM订单
[Server@1478a43]: 6:SQLCLI:SQLFREESTMT:7
[2011-04-25 10:14:08] runqianReportLogger : [INFO ] -取数结束,开始运算
[2011-04-25 10:14:08] runqianReportLogger : [INFO ] -计算结束:
[2011-04-25 10:14:08] runqianReportLogger : [DEBUG] -开始生成HTML......
[2011-04-25 10:14:08] runqianReportLogger : [DEBUG] -生成HTML结束......
        观察中我们可以看到,当从第一页翻到第五页时,后台并没有打印取数sql,是因为从缓存取数的原因;当翻到第六页时,看到完整的取数sql,说明我们设置的缓存页数5(cachePageNum=”5”)生效。


注:默认是按照展现分页导出对应个数的sheet,exportExcelOneSheet是修改默认属性设置将所有内容导出到一个sheet,如超出sheet的条数或列数限制就会报错

猜你喜欢

转载自blog.csdn.net/RQlyc/article/details/82627168