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 risultatoIl 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.



19:11
MarcoGG

Posted in:
0 commenti:
Posta un commento