Kuinka tarkistaa, sisältääkö merkkijono aakkosellisen (ei-numeerisen) merkin Access VBA: n kautta

Tietojen "puhdistaminen" ennen niiden tuomista tietokantaan on melko tavallista – yksi syy siihen, miksi olet alkanut käyttää tietokantaa, on se, että voit ennakoivasti tehdä kyselyitä tietokannasta tiettyjen ehtojen perusteella, eikö niin? Joten miten käsittelet ulkoisia tilanteita, joissa esimerkiksi sinun on tuotava tietoja tiedostosta, johon yksi henkilö kirjoittaa "$", mutta toinen olettaa, että tiedät sen olevan rahallinen arvo – tai mikä pahempaa, jossa joku kirjoittaa "am" tai "pm", mutta toinen käyttää 24-tuntista kelloa? Kuten tavallista, ongelmaan on monia tapoja lähestyä, mutta yksi tapa on tarkistaa, onko merkkijono vain numerosarja vai sisältääkö se "ei-numeroita". Pienellä VBA:n avulla tällainen tarkistus on yksinkertainen – ja tämä artikkeli näyttää, kuinka yksinkertaista…

Miksi meidän on tehtävä tämä?

TietomerkitJos tuot minkäänlaista tietoa, jonka syöttämiseen tai poimimiseen et voi vaikuttaa, olet törmännyt tähän ongelmaan monta (monta!) kertaa aiemmin – ihmiset syöttävät tietoja itselleen sopivimmalla tavalla, eivätkä yhdenmukaisesti. Tämä tarkoittaa, että on vain ajan kysymys, milloin sinun on... tehdä se on yhtenäinen ennen kuin voit tuoda sen.

Tyypillinen esimerkki tästä on, että sinun on tuotava tiedot numeeriseen kenttään, mutta kun tarkastelet tietoja, näet, että jotkut ovat erottaneet tuhansia pilkuilla, toiset ovat lisänneet valuuttamerkin - ja kuka tietää mitä muuta.

Nopea varoituksen sana!

Tietojen tuonti, joita ei ole puhdistettu tietokantaan, voi olla melko tuhoisaa - parhaimmillaan se voi vääristää raportointiasi, pahimmillaan saatat päätyä kaikenlaisiin rikkoutuneisiin asioihin - älä anna likaisten tietojen tuonnin olla syy yritän korjaa Access-ongelma koko viikonloppu!

Kuinka päästä eroon aakkosmerkeistä

Voisit tietysti tehdä haun ja korvata manuaalisesti, mutta se voi viedä aikaa ja saatat menettää jotain (jos etsit vain esimerkiksi dollarin merkkejä, saatat unohtaa euromerkin tai pilkkuja, välilyöntejä jne.) . Joten helpoin ja luotettavampi tapa tehdä se on antaa Accessin tehdä kovaa työtä alla olevan koodin avulla.

Koodiin ...

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

Mitä koodi tekee

VBA-koodiFunktio on tässä hyvin suoraviivainen. Käymme vain läpi syötetyn merkkijonon merkki kerrallaan. Jos merkki on numero, lisäämme sen väliaikaiseen merkkijonoon ja lopuksi muunnamme sen "pitkäksi" merkkijonoksi.

Koodin mukauttaminen sinulle sopivaksi

Kuten näette - funktio palauttaa tietotyypin "pitkä" - jos työskentelet kokonaislukujen, liukulukujen jne. Kanssa, sinun on muutettava toimintoa vastaavasti niin, että se palauttaa oikean tyyppisen arvon tietokantaan.

Tekijän esittely:

Mitchell Pond on tietojen palauttamisen asiantuntija DataNumen, Inc., joka on maailman johtava tietojen palautustekniikoissa, mukaan lukien korjaus SQL Server tietokanta ja Excel-palautusohjelmistotuotteet. Lisätietoja osoitteessa www.datanumen.com

Kommenttien lisääminen on estetty.