Important:

Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog podem ser tratados como consultoria freelance.

Views

VBA Access - Run Time Error 3021 - O BOF ou EOF for VERDADEIRO

O modo como muitos de nós programamos no Access, utilizando o DAO, finda por nos expor a alguns erros peculiares com o quais precisamos aprender a lidar.

Um destes é o erro 3021 - Run-time error 3021: O BOF ou EOF for VERDADEIRO, ou o registro atual foi 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

Google Talk: bernardess@gmail.com
Skype: inanyplace
MSN: bernardess@gmail.com

LinkWithinBrazilVBAAccessSpecialist

Related Posts Plugin for WordPress, Blogger...

Vitrine