Come verificare se una stringa contiene un carattere alfabetico (non numerico) tramite Access VBA

Condividi ora:

"Pulire" le informazioni prima di importarle nel database è una pratica piuttosto comune: dopotutto, uno dei motivi per cui si utilizza un database è proprio quello di poterlo interrogare in modo prevedibile in base a criteri predefiniti, giusto? Come gestire, quindi, situazioni in cui, ad esempio, è necessario importare informazioni da un file in cui una persona inserisce il simbolo "$" ma un'altra presume che si tratti di un valore monetario, o peggio, in cui qualcuno inserisce "am" o "pm" ma un'altra utilizza il formato 24 ore? Come al solito, esistono diversi modi per affrontare il problema, ma uno di questi consiste nel verificare se una stringa è composta solo da numeri o se contiene caratteri non numerici. Con un po' di VBA, questo tipo di controllo è semplice, e questo articolo vi mostrerà quanto.

Perché dobbiamo farlo?

Caratteri dei datiSe stai importando informazioni di cui non hai il controllo su come vengono inserite o estratte, ti sarai imbattuto in questo problema molte (molte!) volte prima: le persone inseriscono i dettagli nel modo che è più comodo per loro, non in modo uniforme. Ciò significa che è solo questione di tempo prima che tu debba make it uniforme prima di poterlo importare.

Un tipico esempio di ciò è dove devi importare dati in un campo numerico ma quando guardi i dati vedi che alcuni hanno separato le migliaia con virgole, altri hanno aggiunto un segno di valuta e chissà cos'altro.

Un rapido avvertimento!

L'importazione di dati che non sono stati ripuliti nel tuo database può essere piuttosto disastrosa - nella migliore delle ipotesi può distorcere i tuoi rapporti, nel peggiore dei casi potresti finire con ogni sorta di cose rotte - non lasciare che le importazioni di dati "sporche" siano la ragione per cui ci sto provando risolvere il problema di accesso tutto il fine settimana!

Come "sbarazzarsi di" caratteri alfabetici

Potresti fare una ricerca e sostituire manualmente ovviamente, ma farlo può richiedere tempo e potresti perdere qualcosa (se stai cercando, ad esempio, solo i simboli del dollaro, potresti perdere il simbolo dell'euro o virgole, spazi ecc.) . Quindi il modo più semplice e affidabile per farlo è lasciare che Access faccia il duro lavoro usando il codice qui sotto.

Sul codice...

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

Cosa fa il codice

Codice VBALa funzione qui è molto semplice. Tutto ciò che facciamo è scorrere la stringa che ci viene passata, un carattere alla volta. Se il carattere è un numero, lo aggiungiamo alla nostra stringa temporanea e, al termine, la convertiamo in un "long".

Adattando il codice alle tue esigenze

Come puoi vedere - la funzione restituisce un tipo di dati "lungo" - se stai lavorando con numeri interi, o punti mobili ecc. allora vorrai cambiare la funzione di conseguenza in modo che restituisca il giusto tipo di valore per il tuo database.

Introduzione dell'autore:

Mitchell Pond è un esperto di recupero dati in DataNumen, Inc., che è il leader mondiale nelle tecnologie di recupero dati, tra cui riparazione SQL Server banca dati ed eccellere prodotti software di recupero. Per maggiori informazioni visita www.datanumen.com

Condividi ora:

I commenti sono chiusi.