源代码在这儿:
Sub bijiao(t1 As Long, t2 As Long, zu As String)
Dim panduan As Boolean, temp As Double
hzong = 0
nnn = 0
zong = 0
With huikuan
If .Recordset.EOF = True And .Recordset.BOF = True Then
    Exit Sub
End If
.Recordset.MoveFirst
Do Until .Recordset.EOF
    If Val(.Recordset("日期")) >= t1 And Val(.Recordset("日期")) <= t2 And .Recordset("组别") = zu Then
        panduan = False
        hbaobiao.Refresh
        nnn = nnn + 1 '设置全部记录数计数器
        zong = zong + .Recordset("回款额") '统计所有符合条件的记录的回款额
        hzong = hzong + .Recordset("回款额")
        '假如数据库为空,则进行添加
        If hbaobiao.Recordset.EOF = True And hbaobiao.Recordset.BOF = True Then
            Call cunru
            GoTo aaa
        Else
            '对已有数据进行判断,以决定是否添加数据,还是进行数据更新
            hbaobiao.Recordset.MoveFirst
            Do Until hbaobiao.Recordset.EOF
'---------------------------------------------------------------------------
'就是这一段被跳过
                If hbaobiao.Recordset("单位名称") = .Recordset("单位名称") _
                            And hbaobiao.Recordset("组别") = .Recordset("组别") Then
                    temp = hbaobiao.Recordset("回款额")
                    hbaobiao.Recordset.Delete
                    hbaobiao.Recordset.Close
                    hbaobiao.Recordset.Open
                    hbaobiao.Refresh
                    hbaobiao.Recordset.AddNew
                    hbaobiao.Recordset("类型") = .Recordset("类型")
                    hbaobiao.Recordset("组别") = .Recordset("组别")
                    hbaobiao.Recordset("单位名称") = .Recordset("单位名称")
                    hbaobiao.Recordset("回款额") = .Recordset("回款额") + temp
                    hbaobiao.Recordset.Update
                    panduan = True
                    hbaobiao.Recordset.MoveNext
                Else
                    hbaobiao.Recordset.MoveNext
                End If
'-------------------------------------
            Loop
            If panduan = False Then
                Call cunru
            End If
        End If
aaa:
        .Recordset.MoveNext
    Else
        .Recordset.MoveNext
    End If
Loop
End With
End Sub

解决方案 »

  1.   

    建议加一个on error goto 语句,在错误处理的地方来个msgbox err & " " & error测试一下是不是某个地方出错了。如果这个子程序的调用处用到错误处理了,在这段子程序中如果需要错误时可能会直接退出子程序。
      

  2.   

    你将hbaobiao.Recordset.MoveFirst语句改成:
    if hbaobiao.recordset.recordcount>0 then
        haobiao.recordset.movelast
        haobiao.recordset.movefirst
    end if
    就行了
      

  3.   

    也就是说:你只要在hbaobiao.Recordset.MoveFirst前加上一条hbaobiao.Recordset.MoveLast语句就行了。
      

  4.   

    你试一下在
    hbaobiao.Recordset.MoveFirst

    Do Until hbaobiao.Recordset.EOF
    之间加doevents 或 加上一个空循环!
      

  5.   

    循环语句不太正规do while 条件
    ...
    loopdo 
    ...
    loop until 条件
      

  6.   

    hbaobiao.Recordset.Delete
    hbaobiao.Recordset.Close
    hbaobiao.Recordset.Open
    这几句话放在循环里面也有问题
                        
      

  7.   

     Do Until 
     改为;
     while 语句试一下!
     
      

  8.   

    游标和LockType不对,所以move有误,
    在调试环境下系统会认为正确的
      

  9.   

    我又看了一下你的代码,hbaobiao.open的语句不知道你是怎么写的。如果SQL语句中带有中文字段名的where条件,hbaobiao很可能返回一个空数据集。所以执行Do Until hbaobiao.Recordset.EOF时直接跳到了loop坚信原因是字段名不要用中文。我初学时遇到过