Amigos.. tenho um código que possui tratamento de erro para o Erro 3021
Este erro diz respeito ao filtrar um Recordset e após o filtro o mesmo não conter registro. (Recordset_2)
Ao ocorrer o erro >> 3021 <<
Vai para o case do erro, e retorna ao proximo registro do recordset_1
Só que ao ocorrer o mesmo erro novamente.. não o trata... O que fazer:
Grato pela ajuda.
Este erro diz respeito ao filtrar um Recordset e após o filtro o mesmo não conter registro. (Recordset_2)
Ao ocorrer o erro >> 3021 <<
Vai para o case do erro, e retorna ao proximo registro do recordset_1
Só que ao ocorrer o mesmo erro novamente.. não o trata... O que fazer:
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
On Error GoTo TrataErro
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
StrSQL = "SELECT * FROM tblRetorno"
Set rsBaixa = CurrentDb.OpenRecordset(StrSQL)
rsBaixa.MoveLast: rsBaixa.MoveFirst
Do While Not rsBaixa.EOF
StrSQLMov = "SELECT * FROM [movim geral] WHERE NossoNumero = " & rsBaixa!NossoNumero & ""
Aqui acontece o erro que vai para o case 3021... Após o primeiro tratamento volta pra
Do While.. se acontecer o erro novamente não o trata
Set RsMovim = CurrentDb.OpenRecordset(StrSQLMov)
RsMovim.Edit
RsMovim!statuscr = 1
RsMovim!valor11 = rsBaixa!valor11
RsMovim!VrBaixaCr = rsBaixa!VrBaixaCr
RsMovim!databaixa = rsBaixa!databaixa
RsMovim.Update
x = x + 1
'--------------------------------------------------------------------
'Atualiza a tabela BancoBrasilArquivoRetorno para marcar como baixado
'--------------------------------------------------------------------
rsBaixa.Edit
rsBaixa!Baixado = 1
rsBaixa.Update
'--------------------------------------------------------------------
Continuar:
rsBaixa.MoveNext
nCount = nCount + 1
Loop
Case vbNo
Exit Sub
End Select
Exit Sub
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'Tratamento de Erros
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Exit_TrataErro:
DoCmd.Hourglass False
DoCmd.Echo True
Exit Sub
TrataErro:
Select Case Err.Number
'----------------------------------------------------------------
'Erro gerado caso não seja encontrado registro correspondente na
'tabela movim geral ao baixar o tíulo, significa que na tabela
'movim geral não existe o registro correspondente contido na
'tabela tblRetorno
'----------------------------------------------------------------
Case 3021
Dim RsLogErro1 As DAO.Recordset
Dim StrSQLErro1 As String
'Carrego a variável com a SQL da tabela
StrSQLErro1 = "SELECT * FROM tblLogErroBaixa"
'Carrego o recordset com a SQL
Set RsLogErro1 = CurrentDb.OpenRecordset(StrSQLErro1)
'Abre o recordset para novo registro
RsLogErro.AddNew
'Atualizo os campos
RsLogErro!CpBanco = rsBaixa!CpBanco
RsLogErro!NossoNumero = rsBaixa!NossoNumero
RsLogErro!VrBaixaCr = rsBaixa!VrBaixaCr
RsLogErro!databaixa = rsBaixa!databaixa
'Atualizo o recordset e consequentemente a tabela
RsLogErro.Update
'Emito mensagem com o erro ocorrido
MsgBox "Não existe registro correspondente em Boletos Emitidos" _
& vbNewLine & "para o Título >>>>" _
& vbNewLine & "Nosso Número : " & rsBaixa!NossoNumero & "" _
& vbNewLine & "Banco : " & rsBaixa!CpBanco & "" _
& vbNewLine & "Data Baixa : " & rsBaixa!databaixa & "" _
& vbNewLine & "Valor : " & rsBaixa!VrBaixaCr & "", vbCritical, "SEM TITULO CORRESPONDENTE"
'Passo a execução ao rótulo cnontinuar,
'continuando a percorrer os registros da tblRetorno
GoTo Continuar
Case Else
DoCmd.Hourglass False
DoCmd.Echo True
'Chama a função global de tratamento de erros
GlobalErrHandler (Me.Name)
End Select
End Sub
Grato pela ajuda.