"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?
Se 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

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