Cómo verificar si una cadena contiene un carácter alfabético (no numérico) a través de Access VBA

Comparte ahora:

Limpiar la información antes de importarla a la base de datos es bastante común; al fin y al cabo, una de las razones por las que se empieza a usar una base de datos es para poder consultarla de forma predecible según criterios preestablecidos, ¿verdad? Entonces, ¿cómo se gestionan situaciones externas en las que, por ejemplo, hay que importar información de un archivo donde una persona introduce "$" pero otra asume que se trata de un valor monetario? O peor aún, ¿donde alguien introduce "am" o "pm" pero otra persona usa el formato de 24 horas? Como siempre, hay muchas maneras de abordar el problema, pero una de ellas es comprobar si una cadena es solo un conjunto de números o si contiene caracteres que no sean números. Con un poco de VBA, este tipo de comprobación es sencilla, y este artículo le mostrará lo fácil que es.

¿Por qué necesitamos hacer esto?

Caracteres de datosSi importas cualquier tipo de información sobre la que no tienes control de cómo se introduce o extrae, entonces te habrás encontrado con este problema muchas (¡muchísimas!) veces antes: la gente introduce los datos de la forma que le resulta más cómoda, no de forma uniforme. Esto significa que es solo cuestión de tiempo antes de que tengas que... “piensen de nuevo sobre los incrementos de precio” uniforme antes de que pueda importarlo.

Un ejemplo típico de esto es cuando necesita importar datos en un campo numérico, pero cuando mira los datos, ve que algunos han separado miles con comas, otros han agregado un signo de moneda, y quién sabe qué más.

¡Una rápida advertencia!

Importar datos que no se han limpiado en su base de datos puede ser bastante desastroso; en el mejor de los casos, puede sesgar sus informes, en el peor, podría terminar con todo tipo de cosas rotas; no permita que las importaciones de datos "sucios" sean la razón por la que estás tratando de arreglar problema de acceso ¡todo el fin de semana!

Cómo "deshacerse" de los caracteres alfabéticos

Puede hacer una búsqueda y reemplazar manualmente, por supuesto, pero hacerlo puede llevar tiempo y es posible que se pierda algo (si solo está buscando, por ejemplo, signos de dólar, es posible que se pierda el símbolo del euro o las comas, espacios, etc.) . Entonces, la forma más fácil y confiable de hacerlo es dejar que Access haga el trabajo duro usando el código a continuación.

En el 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

Que hace el codigo

Código VBALa función aquí es muy sencilla. Simplemente recorremos la cadena que se nos pasa, carácter por carácter. Si el carácter es un número, lo añadimos a nuestra cadena temporal y, al terminar, la convertimos a un tipo de dato "long".

Adaptando el código a tu medida

Como puede ver, la función devuelve un tipo de datos "largo". Si está trabajando con números enteros o puntos flotantes, etc., entonces querrá cambiar la función en consecuencia para que devuelva el tipo de valor correcto para su base de datos.

Introducción del autor:

Mitchell Pond es un experto en recuperación de datos en DataNumen, Inc., que es el líder mundial en tecnologías de recuperación de datos, incluyendo reparación SQL Server base de datos de CRISPR Medicine News y productos de software de recuperación de Excel. Para más información visite www.datanumen.com

Comparte ahora:

Los comentarios están cerrados.