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