设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1290|回复: 3
打印 上一主题 下一主题

[模块/函数] 如何解决增加行计和页

[复制链接]
跳转到指定楼层
1#
发表于 2022-1-29 20:37:27 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
各位大师
     我在ASLXT大师原码基础上,给表增加了行计字段,增加了计算代码。在使用中存在二个问题:一是第一条记录的转下页行不增加到第二条记录的行计中,其他记录增加,并是正确的。二是有时出现转下页行超过26行,需要添加一页,同时还会出现转下页行的问题,这如何处理,我添加的代码不理想,如何改写才正确,请帮助.
附代码
Dim rs2 As New ADODB.Recordset
    Dim ssql2 As String
    Dim 本页已用行数 As Long, 总页码 As Long, 页序 As Long, 转下页行数 As Long, 世代 As Long, 行计 As Long
    Dim i, mm As Long
    ssql2 = "select 族人代码,综合,世代,行数,页,页序,本页行,转下页行,行计,新谱号,字长,加页 from 报表数据源表 WHERE 姓名<>'' ORDER BY 世代,族人代码 "
      rs2.Open ssql2, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
        总页码 = 0
        本页已用行数 = 0
        页序 = 0
Ha=26
    For i = 1 To CLng(rs2.RecordCount)
          行计 = 0
        If rs2!世代 = 世代 Then
           If 本页已用行数 <= ha - 2 Then            '至少可以在本页插入姓名
                页序 = 页序 + 1    '族人的页序逐个增加
                rs2!页 = 总页码  '族人信息的开始页码不变
                rs2!页序 = 页序
                If 本页已用行数 + 2 + rs2!行数 <= ha Then          '没有转页的情况
                    本页已用行数 = 本页已用行数 + 2 + rs2!行数    '追加本页已用的行数
                    转下页行数 = 0
                   行计 = 本页已用行数        '付添-
                Else
                    '综合跨页,不是姓名跨页,也不是世代跨页,即行数跨页
                    转下页行数 = 本页已用行数 + 2 + rs2!行数 - ha
                   行计 = 本页已用行数 + 2 + rs2!行数
                    总页码 = 总页码 + Int((转下页行数) / ha) + 1      '记录族人信息的结束页码,也是下一个族人信息的开始页码  加1付添,这样可分页
                    本页已用行数 = 转下页行数 Mod ha    '记录最后一页已经使用的行数
                    页序 = 0    '重置页序,使得下一个族人的页序变为第一个
               End If
                   If 转下页行数 > ha Then
                      rs2!加页 = 1
                      mm = Val(转下页行数) - 26
                      CurrentDb.Execute "INSERT INTO 报表数据源表 ( 族人代码,综合,世代, 页, 本页行, 转下页行, 页序, 行计,加页) values('" & rs2!族人代码 & "','" & Mid(rs2!综合, rs2!字长 + 208, 26 * 8) & "','" & rs2!世代 & "','" & rs2!页 + 1 & "', 0,'" & mm & "', 0,'" & ha & "',2)"             '付添-
                   End If               
                    rs2!转下页行 = 转下页行数
        Else
                行计 = 行计 + 2 + rs2!行数
                '跨页,开始新的族人信息
                总页码 = 总页码 + 1
                本页已用行数 = 0
                页序 = 1
                rs2!页 = 总页码
                rs2!页序 = 页序
                If 2 + rs2!行数 <= ha Then
                    本页已用行数 = 2 + rs2!行数
                    转下页行数 = 0
                Else
                    总页码 = 总页码 + Int((2 + rs2!行数) / ha)
                    转下页行数 = (2 + rs2!行数) Mod ha
                End If
                    rs2!转下页行 = 转下页行数
                End If
          Else
            '新的一个世代的族人,从新的页开始
             总页码 = 1 ' 总页码 + 1
            本页已用行数 = 0
            页序 = 1
            rs2!页 = 总页码
            rs2!页序 = 页序
           If 2 + rs2!行数 <= ha Then
                本页已用行数 = 2 + rs2!行数
                转下页行数 = 0
            Else
                总页码 = 总页码 + Int((2 + rs2!行数) / ha)
                转下页行数 = (2 + rs2!行数) Mod ha
            End If
                rs2!转下页行 = 转下页行数
               
             行计 = 行计 + 2 + rs2!行数       '付添
       End If
             世代 = rs2!世代     '记录世代信息,便于下一代从新页开始
              rs2!本页行 = rs2!行数 - 转下页行数
             rs2!新谱号 = i
            rs2!行计 = 行计        '付添
             rs2.Update
           rs2.MoveNext
    Next i
           rs2.Close
          Set rs2 = Nothing
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
4#
发表于 2022-2-3 16:20:53 | 只看该作者
123556
回复

使用道具 举报

3#
 楼主| 发表于 2022-2-2 19:33:07 | 只看该作者
唉!没人给解决
2#
发表于 2022-1-30 21:03:16 | 只看该作者
qertyu
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-29 03:05 , Processed in 0.096519 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表