swetrain
Goto Top

Access - Queries durchsuchen

Hallo zusammen,

weiß jemand eine Möglichkeit, wie man per VBA in Access (2003) in allen Queries (incl. der SQL-Strings in Formularen und Berichten) nach einem bestimmten Begriff suchen kann?
Hintergrund: Ich muss eine Funktion umbenennen und muss daher den Aufruf auch überall in den Queries und Datenherkünften in Formularen und Berichten anpassen.
Danke für alle Infos und Hinweise.

Viele Grüße
Jochen

Content-ID: 2708651978

Url: https://administrator.de/contentid/2708651978

Ausgedruckt am: 04.11.2024 um 22:11 Uhr

colinardo
colinardo 07.05.2022, aktualisiert am 08.05.2022 um 11:30:13 Uhr
Goto Top
Servus Jochen,
habe zwar gerade kein 2003er Access hier im Zugriff, aber probier es mal hiermit, das zeigt die Positionen erst mal nur mit Messageboxes an, Bei Bedarf ließe sich aber auch direkt ein Replace vornehmen (wenn komplizierter bei Bedarf auch mittels Regular Expression) wenn man wollte, du willst da aber vermutlich lieber manuell eingreifen.
Sub SearchAllQueries()
    Dim q As QueryDef, strSearch As String
    ' Suchbegriff definieren  
    strSearch = "Das suche ich"  
    For Each q In CurrentDb.QueryDefs
        If InStr(1, q.SQL, strSearch, vbTextCompare) > 0 Then
            MsgBox "String found in query object with name: '" & vbNewLine & vbNewLine & q.Name & "'" & vbNewLine & vbNewLine & "Containing SQL: " & vbNewLine & vbNewLine & q.SQL  
        End If
    Next
End Sub
Möchtest du die Suchergebnisse lieber in eine Textdatei schreiben lassen wenn die mögliche Anzahl der Funstellen größer ist dann kannst du den Codes so schreiben.
Sub SearchAllQueries()
    Dim q As QueryDef, strSearch As String, objFile As Object, strFilename As String, fso as Object
    ' Suchbegriff definieren  
    strSearch = "Das suche ich"  
    ' Dateiname für das  Logfile  
    strFilename = "E:\search.log"  
    Set fso = CreateObject("Scripting.FileSystemObject")  
    Set objFile = fso.OpenTextFile(strFilename, 2, True)
    For Each q In CurrentDb.QueryDefs
        If InStr(1, q.SQL, strSearch, vbTextCompare) > 0 Then
            objFile.WriteLine "String found in object with name: '" & q.Name & "'" & vbNewLine & "Containing SQL: " & q.SQL & "========================="  
        End If
    Next
    objFile.Close
End Sub
Suchbegriff und Dateiname natürlich an eigene Bedürfnisse anpassen.

p.s. die Query-Definitions kannst du dir auch als Tabelle anzeigen lassen indem du in der Baumübersicht links die Ansicht der Systemobjekte einschaltest und dort die Tabelle MSysQueries öffnest, dort kannst du auch die Spalten nach deinem Begriff manuell filtern.

Grüße Uwe