3 Stimmen

Alle Verwendungen einer Abfrage in einer Access-Anwendung finden

Ich habe eine eigenständige Access 2003-Anwendung mit einer Reihe von Formularen erstellt, die allmählich unordentlich wird. Ich versuche, sie ein wenig aufzuräumen, und ich möchte Dinge tun, wie z. B. alle Verwendungen einer Abfrage zu finden, so dass ich einige globale Aktualisierungen vornehmen kann. Ich kann ctrl-f verwenden, um Verwendungen einer Abfrage im Code zu finden, aber meine Frage ist: Gibt es eine einfache Möglichkeit, die gesamte App zu durchsuchen, um zu finden, wo Abfragen im Eigenschaftenfenster des Steuerelements verwendet werden, z. B. wenn sie direkt an ein Steuerelement gebunden sind?

Es wäre schön, alle Eigenschaften aller Formulare programmgesteuert in Textdateien auszulagern.

3voto

DJ. Punkte 15727

Klicken Sie mit der rechten Maustaste auf die Abfrage im Datenbankfenster und wählen Sie "Object Dependencies".

Dies funktioniert nur, wenn Sie die Autokorrektur von Titelnamen aktiviert haben, was die Standardeinstellung ist. Ich persönlich schalte dies aus, da es die Datenbank aufbläht.

0 Stimmen

Welche Version kann das nicht (2003 übrigens schon)?

0 Stimmen

Die automatische Namenskorrektur wurde in A2000 eingeführt, aber ich weiß nicht, ob sie über Objektabhängigkeiten verfügte. Ich habe Name AutoCorrect nie verwendet, weil es zu gefährlich und zu destabilisierend ist, daher würde ich es nicht empfehlen.

1voto

Birger Punkte 4305

Es funktioniert ziemlich gut, es erkennt alle Abfragen, auch die, die in Comboboxen etc. verwendet werden. Obwohl ich nicht glaube, dass es Abfragen, die im Code verwendet werden, finden wird.

Und wenn Sie eine Abfrage ändern (z. B. den Namen), werden alle Verweise auf diese Abfrage ebenfalls aktualisiert.

0voto

Fionnuala Punkte 89346

Formulare können mit SaveAsText in Textdateien gespeichert werden:

Sub FormToText()
Dim frm
For Each frm In CurrentProject.AllForms
    Application.SaveAsText acForm, frm.Name, "c:\docs\" & frm.Name & ".txt"
Next
End Sub

Aus den Systemtabellen MsysObjects und MsysQueries können Sie eine Vielzahl von Informationen abrufen.

0voto

David-W-Fenton Punkte 22473

Als langjähriger Benutzer von Access, der damit seinen Lebensunterhalt verdient, kann ich Name AutoCorrect nicht empfehlen. Für diese Art von Dingen verwende ich ein Dienstprogramm zum Suchen und Ersetzen. Ich bin seit langem Besitzer von Schwarzes Moshannon's Speed Ferret aber seit der Veröffentlichung von A2003 ist es ziemlich problematisch, da neuere Versionen nicht nativ unterstützt werden. Eine andere Alternative, die ich nicht wirklich benutzt habe, die aber von anderen empfohlen wird, ist Rick Fishers Suchen und Ersetzen .

0voto

Carlos Nunes-Ueno Punkte 102

Ich weiß, dass dies ein wenig alt ist, aber es sah nach einer interessanten Herausforderung aus. Wenn Sie dies in ein Modul einfügen und es ausführen, wird eine Textdatei mit der RecordSource für jedes Formular und der RowSource für jede ComboBox oder ListBox mit einem RowSourceType von "Table/Query" erstellt. Wenn ich mich richtig erinnere, sollten Sie damit jede Eigenschaft erhalten, für die eine Abfrage verwendet werden könnte. Wenn ich mich nicht richtig erinnere, können Sie den Code optimieren, um die anderen zu erfassen oder das Format der Ausgabe zu ändern.

Wenn Sie alle Eigenschaften aller Formulare ausgeben wollten, könnten Sie eine for each-Schleife in der Eigenschaftssammlung des Formulars ausführen und diese in eine Datei schreiben. Das Problem dabei ist, dass Formulare bestimmte Eigenschaften haben, wie z. B. PrtMip und PrtDevName, die Strukturen sind und daher die Write- oder Writeline-Methoden stören. Wenn Sie also versuchen würden, diese Eigenschaften in eine Datei zu schreiben, müssten Sie zuerst eine spezielle Behandlung vornehmen. Ich glaube auch, dass die Lesezeichen-Eigenschaft ebenfalls problematisch sein kann.

Sub ListProperties()
    Dim frm As Object
    Dim ctl As Control

    Dim fs As Object
    Dim file As Object

    Set fs = CreateObject("Scripting.FileSystemObject")
    Set file = fs.CreateTextFile("C:\FormProps.txt", True)

    For Each frm In CurrentProject.AllForms
        DoCmd.OpenForm frm.Name, acNormal, , , , acHidden
    Next frm

    For Each frm In Forms
        file.writeline (frm.Name)
        file.writeline (String(Len(frm.Name), "-"))
        file.writeline "RecordSource" & Chr(9) & frm.Properties("RecordSource")

        For Each ctl In frm.Controls
            With ctl
                Select Case .ControlType
                    Case acComboBox, acListBox
                        .SetFocus
                        If .RowSourceType Like "Table/Query" Then
                            file.writeline Chr(9) & .Name & Chr(9) & "RowSource" & Chr(9) & .RowSource
                        End If
                End Select
            End With
        Next ctl

        file.writeline
    Next frm

    For Each frm In Forms
        DoCmd.Close acForm, frm.Name
    Next frm

End Sub

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X