Caso você ainda não tenha lido a quarta parte, você pode acessá-la em ADO ADOX (ActiveX Data Objects).
Dada a natureza estrita de um banco de dados será impossível ter um código infalível, portanto, é importante que o leitor saiba tratar os erros que possam aparecer para que possíveis problemas sejam resolvidos.
No código anterior possuo um tratamento de erro, embora não o use em todos os exemplos deste curso para não ser pedante com cada código escrito.
Geralmente utilizamos as seguintes instruções para lidar com os erros:
· On Error GoTo “Rótulo”
· On Error Resume Next
No primeiro caso, quando o erro ocorre o código é remitido para um rótulo dentro da rotina, por exemplo:
Sub RecordsetLike(ByVal strBusca As String, ByVal Tipo As String)
On Error GoTo Err_Handler
' Código a ser executado entra aqui
Exit Sub
Err_Handler:
MsgBox Err.Description, vbCritical, Err.Number
Resume Limpar
End Sub
Note que antes do rótulo há a instrução Exit Sub. Esta instrução se faz necessária para evitar a execução do código logo abaixo do rótulo. Esta parte somente é executada quando há um erro.
O leitor pode ou não definir uma mensagem personalizada, mas se o erro é imprevisível o melhor e deixar em aberto a questão e passar a descrição do erro e o número do erro como é feito no exemplo acima.
Uma outra forma de tratar o erro é utilizar a segunda instrução conforme abaixo:
Sub RecordsetLike(ByVal strBusca As String, ByVal Tipo As String)
On Error GoTo Err_Handler
' Código a ser executado entra aqui
Limpar:
On Error Resume Next
rs.Close
Set rs = Nothing
Exit Sub
Err_Handler:
MsgBox Err.Description, vbCritical, Err.Number
Err.Clear
Resume Limpar
End Sub
On Error Resume Next instrui o VBA a continuar a operação em caso de erro. O leitor precisa notar duas coisas aqui:
1.Adição da linha Err.Clear à Adiciono esta linha para limpar o erro causado antes do rótulo Limpar. O motivo para isso é que acima nós resumiremos o código neste ponto após o primeiro erro porém...
2.... Ao resumir no rótulo Limpar caso o primeiro erro tenha sido na abertura do recordset nós não teremos nenhum recordset para fechar o que causaria novo erro (conforme figura abaixo). Então, nós limpamos o erro antes de seguirmos para o rótulo Limpar e ali instruímos o código a continuar em caso de novo erro. Se não fizermos isso, entramos em um loop eterno na primeira instrução On Error GoTo:

Figura 2‑5 Erro retornado ao tentar fechar recordset que ainda não foi aberto
Obviamente que apenas passar a mensagem ao usuário não resolve o seu caso, pois você deseja saber o que está ocorrendo e caso o problema seja no código, você quererá corrigi-lo para evitar recorrência dos problemas.
Como estamos lidando com um banco de dados, talvez a melhor forma de fazermos isso seja através de uma tabela onde “logamos” os erros os quais são futuramente analisados e caso sejam problemas no código os mesmos sejam retificados.