VBA ACCESS - RUN TIME ERROR 3021 - O BOF OU EOF FOR VERDADEIRO

Inline image 1

O modo como muitos de nós programamos do MS Access, utilizamos o DAO, acaba por nos expor a alguns erros peculiares com o quais precisamos aprender a lidar.

Um destes é o erro 3021 - Run-time error 3021

Se o BOF ou EOF for VERDADEIRO, ou o registro atual for eliminado, a operação solicitada requer um registo atual.

Seguindo o padrão "Microsoftniano" poderíamos analisar o erro sobre os seguintes aspectos: Sintomas, Ponto da situação, Como contornar.

SINTOMAS
Este erro ocorre quando o recordset está vazio.

SITUAÇÃO
Este é um problema conhecido (SMR 21204) e será resolvido num FRx Service Pack futuro.

Atribuições de Service Pack não são uma garantia e podem ser alteradas a qualquer momento.

CONTORNAR
Uma solução simples é a de checar se está no final da tabela antes de executar o processo:

if rsBaseDados.EOF=false then
rotina
end if

Normalmente adiciono um tratamento do erro para enganar o processo e dar continuidade ao processamento:

Public Function QueryRecord()
On Error GoTo ErrorHandler

' Seu código fica aqui

ErrorHandlerExit:
Exit Sub

ErrorHandler:
If Err = 3021 Then ' Sem registro corrente
Resume Next
Else
MsgBox "Erro Nº: " & Err.Number & "; Descrição: " & Err.Description
Resume ErrorHandlerExit
End If
End Function


Referências: 
Tags: VBA, Access, error, erro, err, run-time, 3021, SMR 21204, service pack, BOF, EOF



Nenhum comentário:

Postar um comentário

diHITT - Notícias