Controleren of een string een alfabetisch (niet-numeriek) teken bevat via Access VBA

Het 'opschonen' van informatie voordat je deze in je database importeert, is vrij standaard. Je bent immers een van de redenen waarom je een database gebruikt, zodat je deze op een voorspelbare manier kunt doorzoeken op basis van vooraf vastgestelde criteria, toch? Maar hoe ga je om met externe situaties, bijvoorbeeld wanneer je informatie moet importeren uit een bestand waar iemand '$' invoert, maar een ander ervan uitgaat dat het om een ​​geldbedrag gaat? Of erger nog, wanneer iemand 'am' of 'pm' invoert, maar een ander de 24-uursklok gebruikt? Zoals altijd zijn er talloze manieren om dit probleem aan te pakken, maar één manier is om te controleren of een tekenreeks alleen uit getallen bestaat, of dat deze ook 'niet-getallen' bevat. Met een beetje VBA is dit soort controle eenvoudig – en dit artikel laat je zien hoe eenvoudig dat is.

Waarom hebben we dit nodig?

GegevenskaraktersAls je gegevens importeert waar je geen controle over hebt hoe ze worden ingevoerd of opgehaald, dan ben je dit probleem vast al heel vaak tegengekomen: mensen voeren gegevens in op de manier die hen het meest comfortabel lijkt, niet op een uniforme manier. Dit betekent dat het slechts een kwestie van tijd is voordat je... maken het uniform voordat u het kunt importeren.

Een typisch voorbeeld hiervan is waar u gegevens in een numeriek veld moet importeren, maar als u naar de gegevens kijkt, ziet u dat sommigen duizenden hebben gescheiden door komma's, anderen een valutateken hebben toegevoegd - en wie weet wat nog meer.

Een korte waarschuwing!

Het importeren van gegevens die niet zijn opgeschoond in uw database kan behoorlijk rampzalig zijn - in het beste geval kan het uw rapportage vertekenen, en erger nog kan er van alles kapot gaan - laat 'vuile' gegevensimport niet de reden zijn dat u probeer het fix Toegangsprobleem het hele weekend!

Hoe u alfabetische tekens kunt verwijderen

U kunt natuurlijk handmatig zoeken en vervangen, maar dat kan even duren en u kunt heel goed iets missen (als u bijvoorbeeld alleen naar dollartekens zoekt, mist u misschien het euroteken of komma's, spaties, enz.) . Dus de eenvoudigste en betrouwbaarste manier om dit te doen, is door Access het harde werk te laten doen met behulp van de onderstaande code.

Op de code ...

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

Wat de code doet

VBA-codeDe functie is hier heel eenvoudig. We doorlopen de meegeleverde tekenreeks teken voor teken. Als het teken een getal is, tellen we dat op bij onze tijdelijke tekenreeks, en als we klaar zijn, converteren we die naar een "long".

De code aanpassen aan uw wensen

Zoals je kunt zien - de functie retourneert het gegevenstype "lang" - als je werkt met gehele getallen, of drijvende komma's enz., Dan wil je de functie dienovereenkomstig wijzigen zodat het het juiste type waarde voor je database retourneert.

Auteur Introductie:

Mitchell Pond is een expert op het gebied van gegevensherstel in DataNumen, Inc., de wereldleider in technologieën voor gegevensherstel, waaronder reparatie SQL Server databank en Excel-herstelsoftwareproducten. Voor meer informatie bezoek www.datanumen.com

Reacties zijn gesloten.