润乾报表分页计算标签tobig使用

来源:互联网 发布:知乎取消关注话题 编辑:程序博客网 时间:2024/05/15 13:41

海量数据的清单式列表在读取、展现及导出过程中可能会出现速度过慢、内存溢出、系统死机等问题,润乾提供了分页计算的方式发布报表。我们更多熟悉的应该是使用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”)生效。



0 0