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

Podijeli sada:

„Čišćenje“ informacija prije uvoza u bazu podataka prilično je 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 netko 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“. S malo VBA-e, ova vrsta provjere je jednostavna – a ovaj članak će vam pokazati koliko je jednostavna...

Zašto to trebamo učiniti?

Znakovi podatakaAko uvozite bilo kakve podatke nad kojima nemate kontrolu nad načinom na koji se unose ili izdvajaju, s ovim ste se problemom susreli mnogo (mnogo!) puta prije – ljudi unose podatke na način koji im je najugodniji, a ne na uniforman način. To znači da je samo pitanje vremena kada ćete morati napraviti uniformiran 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 neki imaju tisuće odvojene zarezima, drugi dodaju znak valute – i tko zna što još.

Kratko upozorenje!

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 gorem slučaju mogli biste završiti s raznoraznim pokvarenim stvarima – nemojte dopustiti da “prljavi” uvozi podataka budu razlog zašto pokušavam popraviti problem s pristupom cijeli vikend!

Kako se "riješiti" abecednih znakova

Naravno, možete izvršiti pretragu i zamjenu ručno, ali to može potrajati i možda ćete nešto propustiti (ako tražite samo, na primjer, znakove dolara, možete propustiti znak eura ili zareze, razmake itd.) . Stoga je najlakši i pouzdaniji način da to učinite da Access obavi naporan posao pomoću koda 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

Što kod radi

VBA kodFunkcija je ovdje vrlo jednostavna. Sve što ovdje radimo jest da prolazimo kroz niz koji je proslijeđen, jedan znak po jedan. Ako je znak broj, tada ga dodajemo našem privremenom nizu, a kada završimo, pretvaramo ga u "dugi" niz.

Prilagođavanje koda vama

Kao što možete vidjeti – funkcija vraća tip podataka “long” – ako radite s cijelim brojevima ili pomičnim zarezima itd. tada ćete htjeti promijeniti funkciju u skladu s tim tako da vraća pravu vrstu vrijednosti za vašu bazu podataka.

Uvod za autora:

Mitchell Pond je stručnjak za oporavak podataka u 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.