报表内强制分页

报表软件中,可以同过主格的设置来做卡片式的报表。但是有时候客户希望能达到下图这种效果:

1

这种报表看上去比较简单,但是实现的逻辑却比较复杂。

下面我们就看一下这种报表内强制分页的效果是如何实现的:

第一步:

新建一张空白报表。

第二步:

配置数据集

SELECT 雇员.雇员ID,雇员.姓氏,雇员.名字,雇员.出生日期,雇员.地址,雇员.家庭电话 FROM 雇员

浏览数据:

共有11条数据。

第三步:

设计报表

单元格中的内容如下:

A1: =ds1.count(),计算出数据集的条数。

B1: =int(A1)/5+1,A4结合起来用,下面再讲解。

A4 =to(1,B1),这里控制字段名换行显示

B4 =(A4-1)*5

D3: =to(1,5),这里扩展出5列,显示5条记录,如图1.

D4: =ds1.select1(雇员ID,#1==D3+B4))

D5: =ds1.select1(姓氏,雇员ID==D3+B4)

D6: =ds1.select1(名字,#1==D3+B4)

D7: =D5+D6

D8: =ds1.select1(地址,#1==D3+B4)

D9: =ds1.select1(家庭电话,#1==D3+B4)

可能大家对A1B1A4当中的内容不太理解,我讲一下我的理解:

(以这张报表为例)

A1中计算出数据集中的条数为11条,那么B1中的值为(11/5)+1,3,那么A4中就变成了:=to1,3),B4会根据A4来扩展,其值分别是0510.

那么,为什么要在B4中写:=(A4-1)*5呢?因为要给雇员ID加上一个过滤条件,即#1==D3+B4

如果B4中的值为0,且D3扩展出来的值分别是12345D3的扩展的值是不变的),

那么在D4格中过滤出来的员工ID分别是12345

如果B4中的值为5,且D3扩展出来的值分别是12345D3的扩展的值是不变的),

那么在D4格中过滤出来的员工ID分别是678910,以此类推,如下图:

然后将C5,C6,C7,C8,C9的左主格都设置成B4,将A,B两列和第三行的可视属性去掉,再预览报表,如下图:

热门文章