Kako provjeriti da li niz sadrži abecedni (nenumerički) znak putem Access VBA

Podijeli sada:

"Čišćenje" informacija prije uvoza u bazu podataka je prilično standardno - uostalom, jedan od razloga zašto ste počeli koristiti bazu podataka je taj što možete predvidljivo upitati tu bazu podataka za postavljene kriterije, zar ne... zar ne? Dakle, kako se nosite s vanjskim situacijama gdje, na primjer, morate uvesti informacije iz datoteke gdje jedna osoba unese "$", ali druga pretpostavlja da znate da je to novčana vrijednost - ili još gore, gdje neko unese "am" ili "pm", ali druga osoba koristi 24-satni format? Kao i obično, postoji mnogo načina za pristup problemu, ali jedan od načina je provjeriti je li niz samo skup brojeva ili sadrži bilo kakve "ne-brojeve". Uz malo VBA, ova vrsta provjere je jednostavna - i ovaj članak će vam pokazati koliko je jednostavna...

Zašto ovo treba da radimo?

Znakovi podatakaAko uvozite bilo koju vrstu informacija nad kojima nemate kontrolu nad načinom na koji se unose ili izdvajaju, onda ste se s ovim problemom susreli mnogo (mnogo!) puta prije – ljudi unose podatke na način koji im najviše odgovara, a ne na uniforman način. To znači da je samo pitanje vremena kada ćete morati napraviti ujednačen je prije nego što ga možete uvesti.

Tipičan primjer ovoga je kada trebate uvesti podatke u numeričko polje, ali kada pogledate podatke vidite da su neki odvojili hiljade zarezima, drugi su dodali znak valute – i ko zna šta još.

Brza riječ opreza!

Uvoz podataka koji nisu očišćeni u vašu bazu podataka može biti prilično katastrofalan – u najboljem slučaju može iskriviti vaše izvješćivanje, u najgorem slučaju možete završiti s pokvarenim stvarima – ne dozvolite da uvoz “prljavih” podataka bude razlog zašto pokušavate popravi problem pristupa cijeli vikend!

Kako se "otarasiti" abecednih znakova

Možete, naravno, ručno pretražiti i zamijeniti, ali to može potrajati i možda ćete nešto propustiti (ako tražite samo, na primjer, znakove dolara, možda ćete propustiti znak eura ili zareze, razmake itd.). Dakle, najlakši i pouzdaniji način da to učinite je da dozvolite Accessu da obavi težak posao koristeći kod u nastavku.

Na kod…

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

Šta radi kod

VBA kodFunkcija ovdje je vrlo jednostavna. Sve što ovdje radimo je da prolazimo kroz string koji je proslijeđen, jedan po jedan znak. Ako je znak broj, onda ga dodajemo našem privremenom stringu, a kada završimo, pretvaramo ga u "long" (dugi) string.

Prilagođavanje koda vama

Kao što vidite – funkcija vraća tip podataka “long” – ako radite sa cijelim brojevima, ili plutajućim zarezima itd., onda ćete htjeti promijeniti funkciju u skladu s tim tako da vraća pravi tip vrijednosti za vašu bazu podataka.

Uvod za autora:

Mitchell Pond je stručnjak za oporavak podataka DataNumen, Inc., koji je svjetski lider u tehnologijama za oporavak podataka, uključujući Popravak SQL Server baza podataka i Excel softverski proizvodi za oporavak. Za više informacija posjetite www.datanumen.com

Podijeli sada:

Komentari su zatvoreni.