excel-vba嵌套错误处理

问题描述:

我写了一个用于将数据插入到mysql-DB中的vba代码,并且为了节省时间我认为只需要一个连接到数据库就可以执行多个“插入”,但我很担心关于插入命令中的可能错误,以便在发生错误时,我希望一次执行一次查询。excel-vba嵌套错误处理

这使得可以执行命令没有错误,但是,如果有错误,它会再次,我需要处理它。

要做到这一点,我认为下面的代码,但寻找类似的东西,我没有找到任何东西......也许这是一个坏主意?有一个更好的方法吗?

这是我的想法:

For i = 1 To 100 
    '...do something 

    'First error handling activation 
    On Error GoTo ErrHandle1 

    'Reset SQL String 
    SQLStr = "" 

    'Loop for making SQL string for multiple INSERT 
    For ii = 1 To 50 
     '...example instructions: 
     SQLStr = SQLStr & "INSERT INTO myTab (myField) VALUES ('" & ii/i & "'); " 
    Next ii 
    'Execute all insert at one time 
    rs.Open SQLStr, Cn, adOpenStatic 

GoNext: 
On Error GoTo 0 
Next i 

Exit Sub 

'primary error handling 
ErrHandle1: 
'No instrutions here 
'I use resume only to reset error 
Resume Handle1 
Handle1: 

'I try again INSERT loop with a connection to DB for every query 
'Second error handling activation 
On Error GoTo ErrHandle2 
For ii = 1 To 50 
    'String for only one INSERT 
    SQLStr = "INSERT INTO myTab (myField) VALUES ('" & ii/i & "'); " 
    'Single query execution 
    rs.Open SQLStr, Cn, adOpenStatic 
Next ii 
'Back to base code 
GoTo GoNext 

'secondary error handling 
ErrHandle2: 
MsgBox Err & " - " & Error(Err) 
Resume Next 

我建议放置在错误的水平错误处理例程(与正常过程的如果假分离器)。避免转到0万一发生基本错误,它只会耗尽资源。

On Error GoTo ErrHandleri 
For i = 1 To 100 
'...do something 
    For ii =1 To 50 
    On Error GoTo ErrHandlerii 
     'do other thing 
    If False Then 
Errhandlerii: 
    'do error handling stuff 
    End If 
    Next ii 
If False Then 
ErrHandleri: 
'code, e.g. paint the whole line blue 
End If 
Next i 
+0

对不起,但这段代码没有做我想做的事:在替代循环中的错误没有处理 – genespos 2015-04-01 14:34:55