ReDim m_FldsName(rs.Fields.Count) For II = 0 To
rs.Fields.Count - 1 m_FldsName(II) =
rs.Fields(II).Name Next
Do Until rs.EOF =
True ReadFieldsNotOnErr "Err1" ReadFieldsNotOnErr
"TableName" ReadFieldsNotOnErr
"Err2"
rs.MoveNext Loop MsgBox "NotErr:" & Timer -
t
On Error Resume Next rs.MoveFirst t = Timer Do Until
rs.EOF = True ReadFieldsOnErr "Err1" ReadFieldsOnErr
"TableName" ReadFieldsOnErr
"Err2" rs.MoveNext Loop MsgBox "OnErr:" & Timer -
t
rs.Close cn.Close
End Sub
Private Sub
ReadFieldsOnErr(FieldName As String) Dim v As Variant v =
rs(FieldName).Value End Sub
Private Sub
ReadFieldsNotOnErr(FieldName As String) Dim II As Long Dim
IsExists As Boolean Dim v As Variant IsExists = False
For
II = 0 To UBound(m_FldsName) - 1 If m_FldsName(II) = FieldName
Then IsExists = True Exit For End If Next
If
IsExists = True Then v = rs(FieldName).Value End If End
Sub
===================================
测试结果:
无错误时
ReadFieldsOnErr
: 0。46
ReadFieldsNotOnErr : 0。47
有错误时
ReadFieldsOnErr
: 0.96
ReadFieldsNotOnErr :
0.47
可以看到:不使用错误处理,速度相当稳定,而使用错误处理时,有错误的情况下速度落差较大。所以 对于在循环中 频繁调用
的子过程,建议对可能出现的错误进行预处理,减少使用 On error来提升速度。
没有相关教程