Como verificar se uma string contém um caractere alfabético (não numérico) via Access VBA

Compartilhe agora:

"Limpar" informações antes de importá-las para o seu banco de dados é uma prática bastante comum — afinal, um dos motivos para usar um banco de dados é justamente poder consultá-lo de forma previsível, com base em critérios definidos, certo? Mas como lidar com situações externas, como, por exemplo, importar informações de um arquivo onde uma pessoa digita "$" e outra assume que se trata de um valor monetário — ou pior, onde alguém digita "am" ou "pm" e outra pessoa usa o formato de 24 horas? Como sempre, existem várias maneiras de abordar o problema, mas uma delas é verificar se uma string é composta apenas por números ou se contém caracteres que não sejam números. Com um pouco de VBA, esse tipo de verificação é simples — e este artigo mostrará como é simples...

Por que precisamos fazer isso?

caracteres de dadosSe você importa qualquer tipo de informação sobre a qual não tem controle em relação à forma como ela é inserida ou extraída, certamente já se deparou com este problema muitas (muitas!) vezes: as pessoas inserem os dados da maneira que lhes é mais conveniente, e não de forma uniforme. Isso significa que é apenas uma questão de tempo até que você precise... fazer uniformize-o antes de poder importá-lo.

Um exemplo típico disso é quando você precisa importar dados para um campo numérico, mas quando olha para os dados, vê que alguns separaram milhares com vírgulas, outros adicionaram um sinal de moeda - e sabe-se lá o que mais.

Uma palavra rápida de cautela!

A importação de dados que não foram limpos em seu banco de dados pode ser bastante desastrosa - na melhor das hipóteses, pode distorcer seus relatórios, na pior, você pode acabar com todos os tipos de coisas quebradas - não deixe que as importações de dados "sujos" sejam a razão pela qual você está tentando corrigir problema de acesso todo o fim de semana!

Como “se livrar” dos caracteres alfabéticos

Você pode fazer uma pesquisa e substituir manualmente, é claro, mas fazer isso pode levar tempo e você pode perder algo (se estiver pesquisando apenas, por exemplo, cifrões, pode perder o símbolo do euro ou vírgulas, espaços etc.) . Portanto, a maneira mais fácil e confiável de fazer isso é deixar o Access fazer o trabalho pesado usando o código abaixo.

No código…

Public Function removeNonNumeric(inString As String) As Long
    Dim outputString, chrString As String
    Dim strPos As Integer
    
    For strPos = 1 To Len(inString)
        chrString = Mid(inString, strPos, 1)
        If IsNumeric(chrString) Then outputString = outputString & chrString
    Next
    
    removeNonNumeric = CLng(outputString)
End Function

O que o código faz

Código VBAA função aqui é muito simples. Tudo o que fazemos é percorrer a string que é passada como argumento, um caractere por vez. Se o caractere for um número, adicionamos esse número à nossa string temporária e, quando terminamos, convertemos o resultado para um valor do tipo "long".

Adaptando o código para atender você

Como você pode ver – a função retorna um tipo de dado “long” – se você estiver trabalhando com números inteiros, ou pontos flutuantes, etc., então você vai querer alterar a função de acordo para que ela retorne o tipo certo de valor para seu banco de dados.

Introdução do autor:

Mitchell Pond é um especialista em recuperação de dados em DataNumen, Inc., líder mundial em tecnologias de recuperação de dados, incluindo reparar SQL Server banco de dados e produtos de software de recuperação do Excel. Para mais informações visite www.datanumen.com

Compartilhe agora:

Comentários estão fechados.