RDLC报表:每页显示N条记录

摘要:
示例:共有7条记录,每页显示5条记录:原则:由于表的分组包括“开头分页”和“结尾分页”功能,因此我们考虑先将数据分成多个具有N条记录的组,然后启用“结尾分页功能”。

摘要:

  提供一种方案,使分页浏览的报表每页显示固定条数记录,最后一页记录条数不足的,用空行补齐。

示例:

  记录共7条,每页显示5条记录: 

RDLC报表:每页显示N条记录第1张

RDLC报表:每页显示N条记录第2张

原理:

  由于表的分组包含“在起始处分页”和”在结束处分页”的功能,所以我们考虑先将数据分成若干个记录条数为N的组,

再启用“在结束处分页”的功能。

  那么,如何分组呢?考虑记录的下标为 0,1,2,3... 的自然数序列,用下标除以N(设为3),得到以下数列:

  0  /3  取整:0

  1  /3  取整:0

  2  /3  取整:0

  3  /3  取整:1

  4  /3  取整:1

  5  /3  取整:1

  6  /3  取整:2

  所以,我们可以以下标除以3的商的整数值对数据进行分组,则每个分组包含3条数据。当记录条数不能被3整除时,最后一个分组会不足3。分组表达式为 =Int((RowNumber(Nothing) - 1) / N)。

  另一个需要考虑的问题是,最后一个分组的记录条数可能不足N,怎样以空白行补齐它呢?考虑TableRow.Visibility.Hidden属性,可通过表达式设置它的状态。为此,我们在详细信息组内额外添加N-1行,如果检查到当前是记录的最后一组最后一条并且该组记录条数不足N时,将Hidden设为Flase;其它情况为True。

表达式为=IIf(RowNumber(Nothing) = CountRows("table1") AndAlso CountRows() <= r,False,True)。其中r从1开始递增。

实现:

  1.新建WinForm项目,用报表向导添加一张报表,数据源为AdventureWorksDataSet的Employee数据库表,调整详细信息(这里只选择了表内前面7条数据):

RDLC报表:每页显示N条记录第3张

  2.(以下都是在报表的设计模式中)在表内添加组,分组表达式为 =Int((RowNumber(Nothing) - 1) / 3),取消包括组头和包括组尾,勾选在结尾处分页:

RDLC报表:每页显示N条记录第4张

  3.连续插入两行:

RDLC报表:每页显示N条记录第5张

  4.选择插入的第一行(TableRow3),在Visibility的Hidden属性下选择“表达式”,在打开的文本框内填入

=IIf(RowNumber(Nothing) = CountRows("table1") AndAlso CountRows() <= 1, False, True);同理,在插入的第二行(TableRow4)同位置填入

=IIf(RowNumber(Nothing) = CountRows("table1") AndAlso CountRows() <= 2, False, True):

RDLC报表:每页显示N条记录第6张

  5.运行程序,可以看到前两页分别只有3条记录,最后一页1条,空白处用空行补齐了:

RDLC报表:每页显示N条记录第7张

注意:

  如果要在数据集记录条数为0的时候也达到这个效果,只能在数据传递到报表之前预处理,添加一行空记录。

__

原文:

http://www.cnblogs.com/ChenZB/archive/2011/01/07/1930198.html

免责声明:文章转载自《RDLC报表:每页显示N条记录》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇2018年值得关注的10大JavaScript动画库WPF 自定义滚动条(ScrollView、ScrollBar)样式【转载】下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Mybatis分页插件PageHelper简单使用

1. 引入分页插件 引入分页插件有下面2种方式,推荐使用 Maven 方式。 1). 引入 Jar 包 你可以从下面的地址中下载最新版本的 jar 包 https://oss.sonatype.org/content/repositories/releases/com/github/pagehelper/pagehelper/ http://repo1....

REST-framework快速构建API--分页

分页简介当数据量特别大的时候,我们通过API获取数据会非常慢,所以此时我们需要将数据"分批次"取出来,这里的"分批次"就是,分页! REST框架支持自定义分页风格,你可以修改每页显示数据集合的最大长度。 分页链接支持以下两种方式提供给用户: 分页链接是作为响应内容提供给用户 分页链接被包含在响应头中(Content-Range或者Link) 内建...

Vue|分页处理

一、前言 在我们做前端开发时,经常对查询到的列表数据进行分页处理,那么,vue是怎么处理的呢 二、具体步骤   1、在具体模块的xxx.vue的data定义相关变量   2、在对应的xxx.js的获取列表方法稍微做修改,传参加上大括号 {}    3、把一个分页的UI组件,添加到表格的下方 这里就拿vuetify的其中一种分页UI组件来演示 传送门...

数据分页技术(学习笔记)

    最近学习了WebCast中的数据分页技术,现把相关知识点归纳如下,便于以后总结复习: 一、 数据分页概述: 1.通常在Web页面,在显示数据量比较大时,无法在一个页面上显示所有的数据。 2.在某些特定场景下,并不需要返回所有满足条件的数据。 3.从数据的角度看,需要返回指定范围内的数据。 二、分页技术 1.数据层技术: 在数据库查询时,只查询特定页...

pgsql数据库分页排序问题

order by id desc limit 5;//输出前五行刚开始我以为我写错,后来一问,原来是我在js获取数据的时候少打了空格,所以 where 后面要打空格, "desc " 后面 也要打空格。其实这个分页排序问题还蛮多的。具体的视情况而定。...

Paginator分页

1,分页 Django提供了数据分页的类,这些类被定义在django/core/paginator.py中 对象Paginator用于对列进行一页n条数据的分页运算 对象Page用于表示第m页的数据 2,Paginator对象 方法init(列表,int):返回分页对象,参数为列表数据,每面数据的条数 属性count:返回对象总数 属性num_pag...