MS Access | Mapeando 3.500 Erros com a Criação de Tabelas de Erros

MS Access | Mapeando 3.500 Erros com a Criação de Tabelas de Erros


No desenvolvimento de soluções com Microsoft Access, lidar com erros é uma parte fundamental para garantir a robustez das aplicações. O código apresentado cria uma tabela que armazena códigos de erro gerados tanto pelo Access quanto pelo Jet Database Engine, facilitando a análise e o tratamento de falhas que possam ocorrer durante a execução do sistema. A automatização desse processo por meio de VBA oferece uma abordagem eficiente para capturar e registrar tais erros.


Public Function AccessAndJetErrorsTable() As Boolean


' Função que cria uma tabela contendo códigos de erro e suas descrições, tanto do Access quanto do Jet Database Engine.


' Declaração de variáveis necessárias

Dim dbs As DAO.Database

Dim fld As DAO.Field

Dim rst As DAO.Recordset

Dim tdf As DAO.TableDef

Dim lngCode As Long

Dim strAccessErr As String


' Constante para erros definidos pela aplicação ou objeto

Const conAppObjectError = "Application-defined or object-defined error"


' Tratamento de erro

On Error GoTo Error_AccessAndJetErrorsTable


' Atribui o banco de dados atual à variável dbs

Set dbs = CurrentDb


' Cria a definição da tabela de erros chamada "AccessAndJetErrors"

Set tdf = dbs.CreateTableDef("AccessAndJetErrors")


' Cria o campo para armazenar o código do erro (ErrorCode) e adiciona à tabela

Set fld = tdf.CreateField("ErrorCode", dbLong)

tdf.Fields.Append fld


' Cria o campo para armazenar a descrição do erro (ErrorString) e adiciona à tabela

Set fld = tdf.CreateField("ErrorString", dbMemo)

tdf.Fields.Append fld


' Adiciona a tabela recém-criada ao banco de dados

dbs.TableDefs.Append tdf


' Abre um conjunto de registros (recordset) na tabela de erros

Set rst = dbs.OpenRecordset("AccessAndJetErrors")


' Loop para iterar por todos os possíveis códigos de erro (de 0 a 3500)

For lngCode = 0 To 3500

    On Error Resume Next ' Ignora erros que podem ser gerados durante a obtenção do código de erro


    ' Obtém a descrição do erro com base no código

    strAccessErr = AccessError(lngCode)

    DoCmd.Hourglass True ' Ativa o cursor de espera (ampulheta) para indicar que o processo está em andamento


    ' Verifica se o erro tem uma descrição associada

    If strAccessErr <> "" Then


        ' Verifica se o erro não é um erro genérico de aplicação ou objeto

        If strAccessErr <> conAppObjectError Then

            ' Adiciona o código e a descrição do erro à tabela

            rst.AddNew

                rst!ErrorCode = lngCode

                ' Adiciona a descrição do erro ao campo do tipo Memo

                rst!ErrorString.AppendChunk strAccessErr

            rst.Update

        End If

    End If

Next lngCode


' Fecha o conjunto de registros e libera recursos

rst.Close

Set rst = Nothing

DoCmd.Hourglass False ' Desativa o cursor de espera


' Atualiza a janela do banco de dados para exibir a nova tabela

RefreshDatabaseWindow


' Exibe uma mensagem informando que a tabela foi criada com sucesso

MsgBox "Access and Jet errors table created."

AccessAndJetErrorsTable = True ' Retorna verdadeiro indicando sucesso


Exit_AccessAndJetErrorsTable:

    Exit Function ' Encerra a função


' Tratamento de erros: exibe uma mensagem de erro se algo falhar

Error_AccessAndJetErrorsTable:

    MsgBox Err & ": " & Err.Description

    AccessAndJetErrorsTable = False ' Retorna falso indicando falha

    Resume Exit_AccessAndJetErrorsTable


End Function


 Aprenda: 17 Passos Essenciais para Melhorar seu Código VBA 


A função AccessAndJetErrorsTable utiliza a biblioteca DAO para criar uma tabela diretamente no banco de dados Access. Nessa tabela, dois campos são definidos: um para o código do erro e outro para sua descrição. Isso permite ao desenvolvedor consultar posteriormente esses erros de forma organizada. Além disso, ao trabalhar com um range de até Jet Database Engine de erro, a função cobre praticamente todas as situações que podem surgir, desde erros comuns até problemas mais raros, tornando-a uma solução completa para o gerenciamento de exceções.


Um dos principais benefícios dessa técnica é a possibilidade de automatizar o processo de captura e registro de erros. Isso reduz o esforço manual do desenvolvedor, que pode, em vez de lidar com erros à medida que aparecem, ter uma visão holística de todas as possíveis falhas dentro do ambiente. A tabela gerada serve como um "banco de dados de erros", que pode ser revisitado e utilizado para criar procedimentos de tratamento específicos para cada código, melhorando a eficiência e a experiência do usuário.


 Que tal aprender estes códigos também: 

MS Access | Aplicando Função Concatenação de Valores nos Campos das Consultas
MS Access | Utilizando SendKeys de Forma Eficiente
MS Access | Automatizando a Compactação do Bancos de Dados
MS Access | Como Gerenciar Links das Tabelas
MS Access | Quebra de Texto em Linhas com Comprimento Máximo
MS Access | Monitoramento de Conexões de Usuários
MS Access | Mapeando 3.500 Erros com a Criação de Tabelas de Erros
MS Access | Código para Registro de Logs
MS Access | 17 Passos Essenciais para Melhorar seu Código VBA
MS Access | Código VBA para Backup de Todas as Tabelas Comentado


Além disso, o uso de funções como AccessError e a lógica de controle de fluxo dentro da função demonstram uma prática avançada de VBA, onde é possível capturar, filtrar e registrar apenas erros que têm descrições associadas. Ao ignorar os erros definidos pela aplicação e os que não possuem descrição, o código foca apenas em erros relevantes, o que otimiza o tempo de execução e a utilidade da tabela gerada.


Por fim, o recurso de RefreshDatabaseWindow e a utilização de DoCmd.Hourglass mostram a preocupação com a interface do usuário, garantindo que o processo seja visualmente claro e que o banco de dados seja atualizado após a criação da tabela. Com isso, o desenvolvedor tem à disposição uma ferramenta prática e ágil para lidar com erros, facilitando a manutenção e a escalabilidade dos projetos no Access.


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


 Clique nas capas abaixo e compre também: 

DONUT PROJECT: VBA - Projetos e Códigos de Visual Basic for Applications (Visual Basic For Apllication)


Série Top 10 Funções: Top 10 Funções VBA para o Microsoft Excel (Série Top 10 Funções - Microsoft Excel)


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

Nenhum comentário:

Postar um comentário

diHITT - Notícias