“Limpar” as informações antes de importá-las para o seu banco de dados é bastante normal – afinal, uma das razões pelas quais vocêtarted para usar um banco de dados é para que você possa consultar esse banco de dados de forma previsível para definir critérios certo... certo? Então, como você lida com situações externas em que, por exemplo, você precisa importar informações de um arquivo em que uma pessoa insere “$”, mas outra assume que você sabe que é um dinheirotary valor – ou pior, onde alguém digita “am” ou “pm” mas outra pessoa usa o relógio de 24 horas? Como de costume, há várias maneiras de abordar o problema, mas uma delas é verificar se uma string é apenas um conjunto de números ou se contém algum “não-número”. Com um pouco de VBA, esse tipo de verificação é simples – e este artigo mostrará como é simples…
Por que precisamos fazer isso?
Se você estiver importando qualquer tipo de informação que não tem controle sobre como ela é inserida ou extraída, você já se deparou com esse problema muitas (muitas!) vezes antes - as pessoas inserem detalhes da maneira que é most confortável para eles, não de maneira 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…
Função pública 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 Próximo removeNonNumeric = CLng(outputString) End Function
O que o código faz
A função aqui é muito direta. Tudo o que fazemos aqui é percorrer a string que é passada, um caractere por vez. Se o caractere for um número, adicionamos isso ao nosso temporary string, e quando terminamos, convertemos isso em um “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
1