Teabe „puhastamine“ enne selle andmebaasi importimist on üsna tavaline – lõppude lõpuks on üks põhjusi, miks olete andmebaasi kasutama hakanud, see, et saaksite selles andmebaasis ennustatavalt päringuid teha kindlate kriteeriumide alusel, eks? Kuidas siis toimida väliste olukordadega, kus näiteks peate importima teavet failist, kuhu üks inimene sisestab „$“, aga teine eeldab, et teate, et see on rahaline väärtus – või mis veel hullem, kus keegi sisestab „am“ või „pm“, aga kolmas inimene kasutab 24-tunnist kella? Nagu ikka, on probleemi lahendamiseks palju võimalusi, kuid üks viis on kontrollida, kas string on lihtsalt numbrite komplekt või sisaldab see „mitte-numbreid“. Väikese VBA abil on selline kontroll lihtne – ja see artikkel näitab teile, kui lihtne...
Miks me peame seda tegema?
Kui impordite mis tahes teavet, mille sisestamise või ekstraheerimise üle teil kontrolli pole, olete selle probleemiga varem palju (palju!) kordi kokku puutunud – inimesed sisestavad andmeid viisil, mis on neile kõige mugavam, mitte ühtsel viisil. See tähendab, et on vaid aja küsimus, millal peate... tegema ühtlane, enne kui saate selle importida.
Tüüpiline näide selle kohta on olukord, kus peate importima andmed numbriväljale, kuid andmeid vaadates näete, et mõned on eraldanud tuhanded komadega, teised on lisanud valuutamärgi – ja kes teab, mida veel.
Kiire hoiatus!
Andmete importimine, mida pole teie andmebaasi puhastatud, võib olla üsna katastroofiline – parimal juhul võib see teie aruandlust moonutada, halvemal juhul võib kõikvõimalikud asjad katki minna – ärge laske "määrdunud" andmete importimisel olla põhjus. püüan parandage juurdepääsu probleem terve nädalavahetuse!
Kuidas "vabaneda" tähestikulistest tähtedest
Muidugi võite otsida ja käsitsi asendada, kuid see võib võtta aega ja võite millestki märkamata jääda (kui otsite näiteks ainult dollarimärke, võite euro märgist või komadest, tühikutest vms märkamata jätta) . Nii et lihtsaim ja usaldusväärsem viis seda teha on lasta Accessil teha raske töö, kasutades allolevat koodi.
Koodi juurde…
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
Mida kood teeb

Koodi kohandamine teile sobivaks
Nagu näete - funktsioon tagastab andmetüübi "pikk" - kui töötate täisarvude või ujukomadega jne, siis soovite funktsiooni vastavalt muuta, et see tagastaks teie andmebaasi jaoks õiget tüüpi väärtuse.
Autori sissejuhatus:
Mitchell Pond on andmete taastamise ekspert DataNumen, Inc., mis on maailmas juhtiv andmete taastamise tehnoloogiate, sealhulgas remont SQL Server andmebaas ja Exceli taastamise tarkvaratooted. Lisateabe saamiseks külastage www.datanumenCom