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.

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

Nenhum comentário:

Postar um comentário

diHITT - Notícias