Cum să verificați dacă un șir conține un caracter alfabetic (non-numeric) prin Access VBA

Distribuie acum:

„Curățarea” informațiilor înainte de a le importa în baza de date este destul de standard – la urma urmei, unul dintre motivele pentru care ați început să utilizați o bază de date este acela de a putea interoga previzibil baza de date respectivă pentru anumite criterii, nu-i așa? Deci, cum gestionați situațiile externe în care, de exemplu, trebuie să importați informații dintr-un fișier în care o persoană introduce „$”, dar alta presupune că știți că este o valoare monetară – sau, mai rău, în care cineva introduce „am” sau „pm”, dar o altă persoană folosește formatul de 24 de ore? Ca de obicei, există o mulțime de modalități de a aborda problema, dar o modalitate este de a verifica dacă un șir de caractere este doar un set de numere sau dacă conține „non-numere”. Cu puțin VBA, acest tip de verificare este simplu – iar acest articol vă va arăta cât de simplu…

De ce trebuie să facem asta?

Caracterele de dateDacă importați orice fel de informații asupra cărora nu aveți control asupra modului în care sunt introduse sau extrase, atunci v-ați mai confruntat cu această problemă de multe (multe!) ori înainte - oamenii introduc detalii în modul care le este cel mai confortabil, nu într-un mod uniform. Aceasta înseamnă că este doar o chestiune de timp până când va trebui să... face este uniform înainte de a-l putea importa.

Un exemplu tipic în acest sens este cazul în care trebuie să importați date într-un câmp numeric, dar când vă uitați la date, vedeți că unii au separat miile cu virgule, alții au adăugat un semn de monedă - și cine știe ce altceva.

Un scurt cuvânt de precauție!

Importarea datelor care nu au fost curățate în baza de date poate fi destul de dezastruoasă – în cel mai bun caz, vă poate denatura raportarea, în cel mai rău caz, puteți ajunge cu tot felul de lucruri rupte – nu lăsați importurile de date „murdare” să fie motivul pentru care încerci remediați problema de acces tot sfarsitul de saptamana!

Cum să „scăpați de” caracterele alfabetice

Puteți căuta și înlocui manual, desigur, dar acest lucru poate dura timp și este posibil să pierdeți ceva (dacă căutați doar semne de dolar, de exemplu, este posibil să pierdeți semnul euro sau virgulele, spațiile etc.) . Deci, cel mai simplu și mai fiabil mod de a face acest lucru este să lăsați Access să facă munca grea folosind codul de mai jos.

Pe cod...

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

Ce face codul

Cod VBAFuncția de aici este foarte simplă. Tot ce facem aici este să parcurgem șirul transmis, câte un caracter pe rând. Dacă caracterul este un număr, atunci îl adăugăm la șirul nostru temporar, iar când terminăm, îl convertim într-un „long”.

Adaptarea codului pentru a vă potrivi

După cum puteți vedea – funcția returnează un tip de date de „lung” – dacă lucrați cu numere întregi, sau puncte mobile etc., atunci veți dori să modificați funcția în consecință, astfel încât să returneze tipul potrivit de valoare pentru baza de date.

Introducerea autorului:

Mitchell Pond este un expert în recuperarea datelor DataNumen, Inc., care este lider mondial în tehnologiile de recuperare a datelor, inclusiv repara SQL Server Baza de date și produse software de recuperare Excel. Pentru mai multe informații vizitați www.datanumen.com

Distribuie acum:

Comentariile sunt închise.