At "rense" information, før du importerer den til din database, er ret standard – en af grundene til, at du er begyndt at bruge en database, er trods alt, at du forudsigeligt kan forespørge databasen efter bestemte kriterier, ikke... ikke? Så hvordan håndterer du eksterne situationer, hvor du f.eks. skal importere information fra en fil, hvor én person indtaster "$", men en anden antager, at du ved, at det er en pengeværdi – eller værre endnu, hvor nogen indtaster "am" eller "pm", men en anden person bruger 24-timers uret? Som sædvanlig er der masser af måder at gribe problemet an på, men én måde er at kontrollere, om en streng bare er et sæt tal, eller om den indeholder "ikke-tal". Med lidt VBA er denne type kontrol enkel – og denne artikel vil vise dig, hvor simpelt det er...
Hvorfor skal vi gøre dette?
Hvis du importerer information, som du ikke har kontrol over, hvordan den indtastes eller udtrækkes, så er du stødt på dette problem mange (mange!) gange før – folk indtaster oplysninger på den måde, der er mest behagelig for dem, ikke på en ensartet måde. Det betyder, at det kun er et spørgsmål om tid, før du bliver nødt til det. lave det ensartet, før du kan importere det.
Et typisk eksempel på dette er, hvor du skal importere data til et numerisk felt, men når du ser på dataene, ser du, at nogle har adskilt tusinder med kommaer, andre har tilføjet et valutategn - og hvem ved hvad der ellers.
Et hurtigt ord med forsigtighed!
Import af data, der ikke er blevet renset til din database, kan være temmelig katastrofal - i bedste fald kan det skæve din rapportering, i værste fald kan du ende med alle mulige ting brudt - lad ikke "snavset" dataimport være grunden til at du Jeg prøver rette adgangsproblem hele weekenden!
Sådan "slippe af" alfabetiske tegn
Du kan selvfølgelig søge og udskifte manuelt, men det kan tage tid at gøre det, og du vil muligvis gå glip af noget (hvis du kun søger for eksempel på dollartegn, kan du gå glip af eurotegnet eller kommaer, mellemrum osv.) . Så den nemmeste og mere pålidelige måde at gøre det på er at lade Access gøre det hårde arbejde ved hjælp af nedenstående kode.
På 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
Hvad koden gør

Tilpasning af koden, så den passer til dig
Som du kan se - funktionen returnerer en datatype på "lang" - hvis du arbejder med heltal eller flydende punkter osv., Vil du ændre funktionen i overensstemmelse hermed, så den returnerer den rigtige type værdi til din database.
Forfatter Introduktion:
Mitchell Pond er en datagendannelsesekspert i DataNumen, Inc., som er verdens førende inden for datagendannelsesteknologier, herunder reparere SQL Server database og excel-genopretningssoftwareprodukter. For mere information besøg www.datanumen.com