Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

Mostrando postagens com marcador 3021. Mostrar todas as postagens
Mostrando postagens com marcador 3021. Mostrar todas as postagens

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



Shark Tip - VBA Access - Run Time Error 3021 - O BOF ou EOF for VERDADEIRO - Fixing Run Time Error 3021 - BOF or EOF is True

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

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 registro 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


  15.01.2025 
Public Function QueryRecord()
    ' Variável para o tratamento de erro
    On Error GoTo ErrorHandler

    ' Adicione seu código principal aqui
    ' Exemplo de consulta ou operação com registros
    ' Aqui, você pode colocar a lógica que deseja executar, como abrir um recordset ou consultar dados.

    ' Verifique se há registros ou outros tipos de operações
    ' Exemplo:
    ' Dim rs As Recordset
    ' Set rs = CurrentDb.OpenRecordset("SELECT * FROM MyTable")
    
    ' Verifique se há registros ou não
    ' If rs.EOF Then
    '     MsgBox "Nenhum registro encontrado!"
    '     Exit Function
    ' End If
    
    ' Seu código continua aqui...
    
    ' Se tudo for bem-sucedido, saímos da função
    Exit Function

ErrorHandler:
    ' Tratar erros específicos de forma mais detalhada
    Select Case Err.Number
        Case 3021 ' Erro: Nenhum registro encontrado
            MsgBox "Erro 3021: Nenhum registro corrente. Não há dados disponíveis para a consulta.", vbExclamation, "Aviso"
            Resume Next ' Retorna à linha seguinte após o erro, para tentar seguir o fluxo do código

        Case Else
            ' Para outros erros, exibe uma mensagem detalhada com o número do erro e a descrição
            MsgBox "Erro Nº: " & Err.Number & vbCrLf & "Descrição: " & Err.Description, vbCritical, "Erro Inesperado"
            ' Aqui, você pode adicionar algum código adicional para registrar erros ou fechar objetos abertos

            ' Se você desejar, pode registrar o erro em algum log, por exemplo:
            ' LogError Err.Number, Err.Description, "QueryRecord"

            ' Resume, para continuar após o erro (ou opcionalmente você pode finalizar a execução)
            Resume ErrorHandlerExit
    End Select

ErrorHandlerExit:
    ' Aqui você pode colocar o código para liberar objetos ou realizar qualquer limpeza necessária
    ' Exemplo:
    ' Set rs = Nothing

    ' Finalizando a execução
End Function


 Clique aqui e nos contate via What's App para avaliarmos seus projetos 

Envie seus comentários e sugestões e compartilhe este artigo!
brazilsalesforceeffectiveness@gmail.com


 Série de Livros nut Project 

DONUT PROJECT: VBA - Projetos e Códigos de Visual Basic for Applications (Visual Basic For Apllication)eBook - DONUT PROJECT 2024 - Volume 03 - Funções Financeiras - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 02 - Conectando Banco de Dados - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 01 - André Luiz Bernardes


 PUDIM PROJECT 

eBook - PT - PUDIM PROJECT 2024 - Python Volume 01 - Funções Essenciais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 02 - Funções Essenciais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 03 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes


eBook - PT - PUDIM PROJECT 2024 - Python Volume 04 - Funções para Automatização - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 05 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 06 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes


eBook - PT - PUDIM PROJECT 2024 - Python Volume 07 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 08 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 09 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes


eBook - PT - PUDIM PROJECT 2024 - Python Volume 10 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 11 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes

diHITT - Notícias