„Č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?
Ako 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

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