Office中国论坛/Access中国论坛

标题: 如何解决增加行计和页 [打印本页]

作者: 付谦    时间: 2022-1-29 20:37
标题: 如何解决增加行计和页
各位大师
     我在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
作者: 灰太郎    时间: 2022-1-30 21:03
qertyu
作者: 付谦    时间: 2022-2-2 19:33
唉!没人给解决
作者: 灰太郎    时间: 2022-2-3 16:20
123556




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3