Views

Histats

Vitrine

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

Inline image 1
O modo como muitos de nós programamos no MS 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


Reference:
Tags: VBA, Access, error, 3021, run time error, DAO, erro, erros, SMR 21204

✔ VBA Brazil®

✔ VBA Brazil®
brazilsalesforceeffectiveness@gmail.com
Related Posts Plugin for WordPress, Blogger...
diHITT - Notícias