Ako skontrolovať, či reťazec obsahuje abecedný (nečíselný) znak cez Access VBA

Zdieľať teraz:

„Čistenie“ informácií pred ich importom do databázy je celkom štandardné – koniec koncov, jedným z dôvodov, prečo ste začali používať databázu, je to, aby ste mohli predvídateľne vyhľadávať v tejto databáze stanovené kritériá, však? Ako teda riešiť externé situácie, keď napríklad musíte importovať informácie zo súboru, kde jedna osoba zadá „$“, ale iná predpokladá, že viete, že ide o peňažnú hodnotu – alebo ešte horšie, keď niekto zadá „am“ alebo „pm“, ale iná osoba použije 24-hodinový formát? Ako obvykle, existuje veľa spôsobov, ako sa k problému priblížiť, ale jedným zo spôsobov je skontrolovať, či je reťazec iba súborom čísel alebo či obsahuje nejaké „nečísla“. S trochou VBA je tento druh kontroly jednoduchý – a tento článok vám ukáže, aké jednoduché…

Prečo to musíme robiť?

Dátové znakyAk importujete akékoľvek informácie, nad spôsobom ich zadávania alebo extrahovania nemáte kontrolu, s týmto problémom ste sa už určite stretli mnohokrát (veľa!) – ľudia zadávajú údaje spôsobom, ktorý im najviac vyhovuje, nie jednotným spôsobom. To znamená, že je len otázkou času, kedy budete musieť činiť skôr, ako ho budete môcť importovať.

Typickým príkladom toho je miesto, kde musíte importovať údaje do číselného poľa, ale keď sa pozriete na údaje, uvidíte, že niektoré oddelili tisíce čiarkami, iné pridali znak meny - a ktovie čo ešte.

Krátke slovo opatrnosti!

Importovanie údajov, ktoré neboli vyčistené do vašej databázy, môže byť dosť katastrofálne - v najlepšom prípade môže skresliť vaše vykazovanie, v horšom prípade by ste mohli skončiť s rozbitým všetkým možným - nedovoľte, aby bol „špinavý“ import údajov dôvodom, snažím sa opraviť problém s prístupom celý víkend!

Ako sa „zbaviť“ abecedných znakov

Môžete samozrejme vyhľadať a nahradiť manuálne, ale to môže chvíľu trvať a niečo vám môže uniknúť (ak hľadáte napríklad iba znaky dolára, môže vám chýbať znak eura alebo čiarky, medzery atď.) . Najjednoduchším a najspoľahlivejším spôsobom, ako to urobiť, je nechať program Access vykonať tvrdú prácu pomocou nižšie uvedeného kódu.

Do kódu ...

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

Čo robí kód

Kód VBAFunkcia je tu veľmi priamočiara. Všetko, čo tu robíme, je prechádzanie reťazca, ktorý nám je zadaný, jeden znak po druhom. Ak je znak číslo, pridáme ho k nášmu dočasnému reťazcu a keď skončíme, skonvertujeme ho na typ „long“.

Prispôsobenie kódu tak, aby vám vyhovoval

Ako vidíte - funkcia vracia dátový typ „long“ - ak pracujete s celými číslami alebo pohyblivými rádovými bodmi atď., Budete chcieť príslušne zmeniť funkciu tak, aby vrátila správny typ hodnoty pre vašu databázu.

Úvod autora:

Mitchell Pond je expert na obnovu dát v DataNumen, Inc., ktorá je svetovým lídrom v oblasti technológií obnovy dát, vrátane oprava SQL Server databázy a vynikajúce softvérové ​​produkty na obnovenie. Pre viac informácií navštívte www.datanumen. S

Zdieľať teraz:

Komentáre sú uzavreté.