欢迎您访问我爱IT技术网,今天小编为你分享的电脑教程是通过网络精心收集筛选的最优节选:“网页报表中单数据集分页SQL如何实现层式报表”,请注意:文中所谈及的内容不代表本站的真正观点,也请不要相信各种联系方式。下面是关于网络上网页报表中单数据集分页SQL如何实现层式报表的整理详细信息
详细操作
解决思路
对于mysql这类可以直接使用行式的引擎实现层式报表的数据库来说,如果勾选了行式引擎,程序会自动生成分页sql,如,我新建了一个数据集ds1,来源于mysql数据库,基本sql语句为:
SELECT * FROM 订单明细
如果不定义分页sql,勾选行式引擎选项,预览报表时,程序会将上面的sql语句转化为下面的语句来取一页的数据:
select * from ( select row_.*, rownum rownum_ from (SELECT * FROM 订单明细) row_ where rownum <=60) where rownum_ > 30
如果数据库是上面所说的access一类的无法直接生成分页sql的数据库,那么就需要编写分页SQL。
操作步骤
以FRDemo内置的Access为例,说明Access如何写分页查询。
新建数据集
新建数据集ds1:SELECT * FROM 订单明细。
添加分页查询SQL语句
在数据查询面板中点击分页查询按钮,编辑分页SQL语句,如下图:

完整的sql语句如下:
SELECT *
FROM (
SELECT *
FROM(
SELECT *
FROM 订单明细 ORDER BY 订单ID ASC limit ${fr_pagesize*fr_pagenumber}
) AS e1 ORDER BY 订单ID DESC limit ${
if(fr_pagenumber==int((((fr_rowcount-1)/fr_pagesize)+1)),fr_rowcount - (fr_pagesize*(fr_pagenumber-1)),fr_pagesize)
}
) AS e2 ORDER BY 订单ID ASC
注:上述代码放置在分页sql面板中时,要删除后面的注释语句,并且语句中的三次ORDER BY 一定不能丢。
分页sql语句注释
${if(fr_pagenumber==int( (((fr_rowcount-1)/fr_pagesize)+1)),fr_rowcount - (fr_pagesize*(fr_pagenumber-1)),fr_pagesize)}意思是:
假如是最后一页的话,就取最后一页剩余的行数,假如不是最后一页就取每页需要显示的行数,示例中每页需要显示的行数为30行。
fr_pagenumber:当前浏览的页数,如果预览第2页,则fr_pagenumber=2;
fr_rowcount:当前数据集的总数据条数;
fr_pagesize:表示设置行式引擎时,每页需显示的行数,该示例中fr_pagesize=30.
在预览时,设定的分页查询根据3个变量的值,会生成数据库查询,如fr_pagenumber=2,fr_pagesize=30时,即在web端预览报表,预览至第2页时,上面的sql语句会转化为:
SELECT * FROM ( SELECT * FROM ( SELECT * FROM 订单明细 ORDER BY 订单ID ASC limit 60 )AS e1 ORDER BY 订单ID DESC limit30 ) AS e2 ORDER BY 订单ID ASC
预览至第3页时,fr_pagenumber=3,sql语句就转化为:
SELECT * FROM ( SELECT * FROM ( SELECT * FROM 订单明细 ORDER BY 订单ID ASC limit 90 )AS e1 ORDER BY 订单ID DESC limit30) AS e2 ORDER BY 订单ID ASC
预览至最后一页时,所剩下的数据可能不足30行,那么sql语句又会转化成什么样呢?
如果fr_rowcount=100,fr_pagesize=30,即数据总行数为100行,每页显示30行,预览至最后一页,也就是第4页时,fr_pagenumber=4,sql语句将转换为:
SELECT * FROM ( SELECT * FROM ( SELECT * FROM 订单明细 ORDER BY 订单ID ASC limit 90)AS e1 ORDER BY 订单ID DESC limit10 ) AS e2 ORDER BY 订单ID ASC
报表主体设计
将数据集中的数据列拖曳至单元格中。
行式引擎设置
选择模板>报表引擎属性,勾选用行式的引擎来执行报表,再勾选下面的使用按页运算分段执行报表,每页记录数使用默认值30,如下图:

效果查看
点击分页预览,效果图如下:

用户类似问题:
问题1:如何对数据库查询的表单实现分页和排序
//首先按字符个数排序,然后按相对应的字符大小排序 function mySort(list){ var len=0; var add=""; for(var i=0;ilen){ len=str.length; } } for(var i=0;i >>详细
问题2:快逸报表单元格内容过多分页问题,急求!
发给我 我帮伱弄 别的我不会 来这单位就会EXCEL了 麻烦采纳,谢谢! >>详细
问题3:sqlserver如何实现分页
实现的代码,网上很多。 写个最简单的例子 select top 3 id from table where id not in(select top 3 Id from table); 你只要修改里面的两个3就可以看到分页了。 >>详细
问题4:如何实现SQL Server 2005快速Web分页
执行程序后的返回结果如下: pagenumber saleid product saledate saleprice 2 12 pooltable 7/11/1908 0:00 640 2 15 pooltable 8/11/1908 0:00 641 2 18 pooltable 9/11/1908 0:00 658 就如你所看到的,程序执行后将会返回一页的数据,包含三... >>详细
问题5:SQL 2008 REPORTING SERVICES 中 RDL报表如何在自...
有时线条太小,而且预览时他自动把“显示比例”变小,看起来好像没有似的。但放大看和真正打印出来发现是有线条的。 >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
