设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: 付谦
打印 上一主题 下一主题

[报表] 用数组碰到问题

[复制链接]
11#
 楼主| 发表于 2022-6-8 20:46:34 | 只看该作者
本帖最后由 付谦 于 2022-6-8 21:11 编辑

“组别”字段无关紧要,测试二 f = Int((ww - 1) / 6)语句就是分组用的,0为第一组,1为第二组,2为第三组,类推分组最大页累加可用循环解决 For i = 1 To f        'f是组别
                                        sum = sum + Intsz(i)
                                         Next
下面这段 也可用循环解决
       If f = 0 Then
              kk1 = 0
           ElseIf f = 1 Then
               kk1 = Intsz(1)
           ElseIf f = 2 Then
               kk1 = Intsz(1) + Intsz(2)
           ElseIf f = 3 Then
               kk1 = Intsz(1) + Intsz(2) + Intsz(3)
           ElseIf f = 4 Then
               kk1 = Intsz(1) + Intsz(2) + Intsz(3) + Intsz(4)
         End If

现困扰我的是如何组合和加页的问题,


12#
 楼主| 发表于 2022-6-8 21:18:23 | 只看该作者
本帖最后由 付谦 于 2022-6-8 21:41 编辑

现困扰我的是如何组合和加页的问题,
13#
 楼主| 发表于 2022-6-8 21:20:59 | 只看该作者
本帖最后由 付谦 于 2022-6-8 21:40 编辑

“组别”字段无关紧要
14#
发表于 2022-6-10 02:33:32 | 只看该作者
付谦 发表于 2022-6-8 20:46
“组别”字段无关紧要,测试二 f = Int((ww - 1) / 6)语句就是分组用的,0为第一组,1为第二组,2为第三组,类 ...

试试使用递归呗。
15#
 楼主| 发表于 2022-6-11 17:48:32 | 只看该作者
问题完全解决

Private Sub Command29_Click()
      CurrentDb.Execute "UPDATE 报表数据源表 SET 报表数据源表.印页 = 0;"
      Dim i, i3 As Integer
      Dim n As Integer
      Dim Intsz() As Integer
      Dim strsql As String
      Dim rst As Object
      Dim ww, qq, 组别 As Long
        nh = 6       '世代数,
        qq = nh       '世代数变量,提高通用性
      strsql = "SELECT Max(报表数据源表.页) AS 页之最大值 FROM 报表数据源表 GROUP BY Partition([世代],1,100," & qq & " ) HAVING (((Partition([世代], 1, 100," & qq & " )) <> False)) ORDER BY Partition([世代],1,100," & qq & ");"
      Set rst = CurrentDb.OpenRecordset(strsql)
       rst.MoveLast
       rst.MoveFirst
         n = rst.RecordCount
      ReDim Intsz(1 To n)
      For i = 1 To n
         Intsz(i) = rst("页之最大值")        '给数组赋值
         rst.MoveNext
      Next i
          Dim rs6 As New ADODB.Recordset
          Dim I2 As Long
          Dim ssql6 As String
          Dim s, v, f As Integer
          Dim x, 加组 As Integer
          ssql6 = "select 世代,页,印页,转下页行 from 报表数据源表 ORDER BY 世代,页,页序 "
          rs6.Open ssql6, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
          rs6.MoveFirst
            加页 = 0
     For I2 = 1 To CLng(rs6.RecordCount)
              ww = rs6!世代
              s = rs6!页
              v = rs6!转下页行
              f = Int((ww - 1) / qq)       '分组
        If f = 组别 Then                   '同组
           rs6!印页 = s + sum
           If f > 0 And s = Intsz(f + 1) And v > 0 Then
               Intsz(f) = Intsz(f) + 1        '加页赋值给数组     '
           Else
            '  Intsz(f) = Intsz(f)             '不加页不变
           End If
        Else                       '下一组的第一条
           sum = 0
              组别 = Int((ww - 1) / qq)
           For x = 1 To f
               sum = sum + Intsz(x)       '前面组累加数
           Next
        End If
           rs6!印页 = s + sum
                rs6.Update
                rs6.MoveNext
     Next I2
           rst.Close
           Set rst = Nothing
           rs6.Close
           Set rs6 = Nothing
End Sub
16#
 楼主| 发表于 2022-6-11 19:05:42 | 只看该作者
付谦 发表于 2022-6-11 17:48
问题完全解决

Private Sub Command29_Click()

加页=0    加组 多余
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 07:23 , Processed in 0.103510 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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