您的位置信息之舟电 脑硬件栏目首页数据库类Foxpro 收藏本页

→ 在VFP报表中实现每页打印指定记录数二

www.kepusoft.com 信息之舟电脑软件应用栏目

    信息之舟电脑软件应用栏目编者按:

     

    方法三

      在该方法中,定义了一个全局变量tobePrint,该变量的值就是每页要打印的记录数,如果没有定义该变量,则使用默认的每页打印 15 条记录。

      1、temp.dbf添加到报表数据环境中。

      2、将temp.dbf的数据环境中的 BufferModeOverride 属性设置为 5。

      3、在数据环境属性Destroy 事件中写:

      =tablerevert(.t.)

      4、在数据环境属性Init 事件中写:

      if vartype(tobePrint) = "U" &&&& 如果全局变量还没有定义,在这里定义它的默认值为15

      Public tobePrint

      tobePrint = 15

      endif

      *-- 以下代码是为了当要打印的记录数不满一页时,打印空行来填满整个报表页

      do while reccount("temp") % tobePrint <> 0

      append blank

      enddo

      5、 在报表中新建两个报表变量如:nCount、nGroup,变量nCount的计算选项组中选择计数,在变量 nGroup 的要存储的值中写:

      iif(nCount<>0 and nCount % tobePrint=0,nGroup+1,nGroup)

      6、 在报表中增加一个分组并设置分组表达式为nGroup,并选择每组从新的一页上开始复选框。

      7、 用以下代码来运行报表:

      use temp

      *-- 为避免重复定义变量错误,在定义全局变量前首先释放它

      release tobeprint

      *-- 定义全局变量,该变量中保存了每页要打印的记录数

      public tobeprint

      *-- 设置每页打印10条记录

      tobeprint = 10

      *-- 打印我们的报表

      report form temp preview

      方法二与方法三的异同

      二者都是采用了数据分组的方法来实现“每页打印指定记录数”,向表中添加空记录来实现“表中的记录数不是整页数时在最后一页中以空的表格填满报表”。

      二者不同之处在于:方法二是利用临时表来解决问题,数据的分组信息写在临时表中,方法三是利用报表变量来解决分组问题,数据分组是用报表变量来实现的。 

www.kepusoft.com 信息之舟电脑之家收集整理推荐文章