Hvordan sjekke om en streng inneholder et alfabetisk (ikke-numerisk) tegn via Access VBA

Å «rydde» informasjon før du importerer den til databasen er ganske standard – tross alt er en av grunnene til at du har begynt å bruke en database, slik at du forutsigbart kan spørre databasen etter bestemte kriterier, ikke sant ... ikke sant? Så hvordan håndterer du eksterne situasjoner der du for eksempel må importere informasjon fra en fil der én person skriver inn «$», men en annen antar at du vet at det er en pengeverdi – eller enda verre, der noen skriver inn «am» eller «pm», men en annen person bruker 24-timersklokken? Som vanlig er det mange måter å nærme seg problemet på, men én måte er å sjekke om en streng bare er et sett med tall, eller om den inneholder noen «ikke-tall». Med litt VBA er denne typen sjekk enkel – og denne artikkelen vil vise deg hvor enkelt ...

Hvorfor trenger vi å gjøre dette?

DatategnHvis du importerer informasjon du ikke har kontroll over hvordan den legges inn eller hentes ut, har du støtt på dette problemet mange (mange!) ganger før – folk legger inn detaljer på den måten som er mest komfortabel for dem, ikke på en ensartet måte. Dette betyr at det bare er et spørsmål om tid før du må gjøre det uniform før du kan importere det.

Et typisk eksempel på dette er hvor du trenger å importere data til et numerisk felt, men når du ser på dataene ser du at noen har skilt tusenvis med kommaer, andre har lagt til et valutategn – og hvem vet hva mer.

Et raskt ord av forsiktighet!

Å importere data som ikke har blitt renset inn i databasen din kan være ganske katastrofalt – i beste fall kan det skjeve rapporteringen din, i verste fall kan du ende opp med alt mulig ødelagt – ikke la «skitne» dataimporter være grunnen til at du prøver å fikse tilgangsproblem hele helgen!

Hvordan "bli kvitt" alfabetiske tegn

Du kan selvfølgelig gjøre et søk og erstatte manuelt, men å gjøre det kan ta tid og du kan godt gå glipp av noe (hvis du for eksempel bare søker etter dollartegn, kan du gå glipp av eurotegnet eller kommaer, mellomrom osv.) . Så den enkleste og mer pålitelige måten å gjøre det på er å la Access gjøre det harde arbeidet ved å bruke koden nedenfor.

Til koden...

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

Hva koden gjør

VBA kodeFunksjonen her er veldig enkel. Alt vi gjør her er å gå gjennom strengen som sendes inn, ett tegn om gangen. Hvis tegnet er et tall, legger vi det til den midlertidige strengen vår, og når vi er ferdige, konverterer vi den til en «lang» streng.

Tilpasser koden slik at den passer deg

Som du kan se - returnerer funksjonen en datatype "lang" - hvis du jobber med heltall, eller flytende komma osv., vil du endre funksjonen tilsvarende slik at den returnerer riktig type verdi for databasen din.

Forfatterintroduksjon:

Mitchell Pond er en datagjenopprettingsekspert innen DataNumen, Inc., som er verdensledende innen datagjenopprettingsteknologier, inkludert reparasjon SQL Server database og excel-programvareprodukter for gjenoppretting. For mer informasjon besøk www.datanumen. Med

Kommentarer er stengt.