具体语句如下
sub Insertinto()
.....................On Error GoTo Err1:
...............
for i=0 to 1000
...........
re:
ConnSql.Execute "insert into sermain values('" & BH & "','" & MC & "','" & BSC & "','" & XZ & "','" & DJ & "')"    '此句可能出错,出错时Err.Number = -2147217873,我只需铺捉这个错误作出处理即可,但第一次出错可以正常捕捉,第二次及以后就不行了
..............
next iErr1:
    If Err.Number = -2147217873 Then
    ConnSql.Execute "delete  sermain where 客户编号='" & BH & "'"
    Err.Clear
    GoTo re:
    End If
    
MsgBox "共添加 " & I & " 个新客户..."End sub

解决方案 »

  1.   

    在for循环内insert 前添加 err.clear
      

  2.   

    我把err.clear加在错误处理语句中不是一样吗?和加在for循环内insert 前添加 err.clear有什么区别?另,有人建议将On Error GoTo Err1:放入for...next循环中,请问是否可行?
      

  3.   

    你可以写成如下形式:
    ...............
    for i=0 to 1000
    ...........
    On Error resume nextConnSql.Execute "insert into sermain values('" & BH & "','" & MC & "','" & BSC & "','" & XZ & "','" & DJ & "')"    '此句可能出错,出错时Err.Number = -2147217873,我只需铺捉这个错误作出处理即可,但第一次出错可以正常捕捉,第二次及以后就不行了
        If Err.Number = -2147217873 Then
        ConnSql.Execute "delete  sermain where 客户编号='" & BH & "'"
        Err.Clear
        GoTo re:
        End If
    on error goto 0
    ..............
    next i    
    MsgBox "共添加 " & I & " 个新客户..."
      

  4.   

    sub Insertinto()
        .....................
        
        On Error GoTo Err1:
        ...............
        for i=0 to 1000
            ...........
            ConnSql.Execute "insert into sermain values('" & BH & "','" & MC & "','" & BSC & "','" & XZ & "','" & DJ & "')"    '此句可能出错,出错时Err.Number = -2147217873,我只需铺捉这个错误作出处理即可,但第一次出错可以正常捕捉,第二次及以后就不行了
            ..............
        next i
        
    Err1:
        If Err.Number = -2147217873 Then
            ConnSql.Execute "delete  sermain where 客户编号='" & BH & "'"
            Err.Clear
            Resume Next
        End If
        
        MsgBox "共添加 " & I & " 个新客户..."
        
    End sub
      

  5.   

    感谢zyl910(910:分儿,我来了!分已加!
      

  6.   

    这样搞掂它啦!
    ......................
    Err1:
    If Err.Number = -2147217873 Then
    ConnSql.Execute "delete sermain where 客户编号='" & BH & "'"
    Err.Clear
    Resume '''这句可是关键...
    End If
    ................