Descrizione :
Un mio esempio pratico VBA per ricercare una determinata stringa in tutte le Tabelle e Campi di un DB.
+ Articolo :
Inserisco nel Blog questa mia soluzione VBA, data tempo fa ad un utente che chiedeva come
cercare una determinata stringa in tutti i Campi di tutte le Tabelle di un DB Access, utilizzando codice VBA.
Sebbene la richiesta possa sembrare singolare, questo è quel genere di cose che non si trovano certo nei primi 10 risultati di Google, e quindi a maggior ragione nel mio Blog non può mancare.
Il processo illustrato di seguito tiene traccia dell'eventuale nome Tabella e relativo nome Campo in cui la ricerca è andata a buon fine.
Il risultato è una Collection di stringhe con tutte le occorrenze ottenute, che può essere successivamente ciclata, e ad esempio scritta in altro DB, su file, ecc...
--> Codice Esempio :
Dim ricerca As String ricerca = "prova" Dim nomeTabella As String Dim nomeCampo As String Dim Risultati As New Collection Dim n As Variant Dim risultato As Variant Dim T As TableDef Dim F As Field For Each T In CurrentDb.TableDefs If Left(T.Name, 4) <> "MSys" Then For Each F In T.Fields On Error Resume Next n = DLookup("[" & F.Name & "]", T.Name, "[" & F.Name & "]='" & ricerca & "'") If Err.Number = 0 And n = ricerca Then risultato = ricerca & " trovato su " & T.Name & " / " & F.Name Risultati.Add risultato End If Err.Clear Next F End If Next T 'For Each risultato In Risultati ' MsgBox risultato 'Next risultato
Il controllo sui possibili errori della DLookup(), unito all'esclusione delle Tabelle di sistema,
rende il codice già abbastanza "robusto" pur mantenendo la sua semplicità e adattabilità a vari casi.
Ho volutamente lasciato le ultime 3 linee commentate per mantenere un'idea di test dei risultati ottenuti. Nel caso reale ovviamente, è meglio evitare di correre il rischio di ricevere un "treno" di MessageBox.
+ Fine Articolo.
0 commenti:
Posta un commento