Query-Analyzer für Access

Christoph Spielmann, Düsseldorf

Wenn Sie schon einmal mit dem Microsoft SQL-Server gearbeitet haben, werden Sie sicherlich den Query-Analyzer schätzen gelernt haben. Mit diesem Tool können Sie schnell und einfach eine SQL-Abfrage ausführen und das Ergebnis begutachten. Dieser Artikel stellt Ihnen einen Query-Analyzer zum Einsatz unter Access vor.

Man mag es kaum glauben, aber auch der Microsoft SQL Server hat einmal in der Version 1.0 das Licht der Welt erblickt. 1989 hatte Microsoft die erste Version für das Betriebssystem OS/2 herausgebracht, das damals noch unter der Federführung von Microsoft in Zusammenarbeit mit IBM entwickelt wurde. Die Basis des SQL-Servers stammte hierbei vom Sybase SQL-Server 4.0, einem Datenbank-Server für Unix und VMS. Das Typische für diese Datenbank-Server war zu jener Zeit, dass jegliche Kommunikation zwischen Benutzer und Server nur via SQL erfolgen konnte. Dies betraf zum Beispiel das Anlegen von Tabellen, das Hinzufügen von Benutzern, die Vergabe von Zugriffsrechten und natürlich auch das Abfragen von Daten. Die Eingabe von SQL-Anweisungen erfolgt hierbei über den Query-Analyzer (s. Abb. 1) beziehungsweise das DOS-Gegenstück “iSQL”. Erst später stellte Microsoft mit dem Enterprise-Manager eine Benutzeroberfläche zur Verfügung, die dem Benutzer Aufgaben wie beispielsweise die Anlage von Tabellen auch ohne komplizierte SQL-Anweisungen ermöglichte.

Abb. 1: Der Query-Analyzer des Microsoft SQL-Servers

Trotz Enterprise-Managers wird der Query-Analyzer noch von vielen Benutzern eingesetzt, da zum Beispiel die Eingabe von DELETE FROM Kunden zum Löschen von Datensätzen für viele der schnellste Weg ist.

Auch zum Test und zur Fehlerbehebung von SQL-Anweisungen ist der Query-Analyzer gut geeignet.

Die hier vorgestellte Lösung des Query-Analyzers bietet die wichtigsten Funktionen nun auch unter Access. Hierzu zählen die Eingabe und Ausführung von SQL-Statements sowie das Speichern und Laden von Abfragen.

Abb. 2: Erforderliche Verweise zum Einsatz des Query-Analyzers

Abb. 3: Der Access-Query-Analyzer in der Ergebnistabellenansicht …

Abb. 4: … und in der Ergebnisansicht

Der Query-Analyzer für Access besteht aus einem einzelnen Formular, das Sie problemlos in Ihre Datenbank importieren können. Von dort aus können Sie den Query-Analyzer dann aus dem Datenbankfenster heraus öffnen und einsetzen.

Voraussetzung ist lediglich, dass Sie Ihrem Projekt Verweise auf die Objekte ADO und ADOX hinzufügen (siehe Abb. 2).

Ein Einsatz des Query-Analyzers als Add-In ist leider nicht möglich, wie später noch erläutert wird.

Eingabe- und Ergebnisbereich

Das Formular des Query-Analyzers ist zweigeteilt. Im oberen Bereich befindet sich der Eingabebereich für SQL-Anweisungen.

Der untere Ergebnisbereich zeigt das Ergebnis an. Sollte es sich bei der Anweisung um eine SELECT-Anweisung handeln, wird das Ergebnis automatisch als Tabelle angezeigt.

Bei allen anderen Anweisungen – die keine Datensätze zurückliefern – erscheint eine entsprechende Meldung.

Daten und Meldungen sind im unteren Bereich durch ein Register-Steuerelement umschaltbar (s. Abb. 3 und Abb. 4).

Bei SELECT-Abfragen wird automatisch die Ergebnistabelle gefüllt. Als Meldung wird die Anzahl der zurückgelieferten Datensätze ausgegeben.

Bei allen anderen Abfrage-Typen (zum Beispiel DELETE, UPDATE oder INSERT INTO) wird das Register Daten automatisch ausgeblendet und lediglich das Meldungsfenster angezeigt.

Hier wird dann die Anzahl der von der Anweisung betroffenen Datensätze ausgegeben.

Bei DELETE-Anweisungen ist dies zum Beispiel die Anzahl der gelöschten Datensätze.

Sollte die angegebene Anweisung einen Fehler enthalten, wird dieser ebenfalls als Meldung ausgegeben (s. Abb. 5).

Abb. 5: Die Anzeige einer Fehlermeldung

Abb. 6: Auswahl einer gespeicherten Abfrage

Ausführen undprüfen von Anweisungen

Im Kopf des Query-Analyzers befindet sich eine Symbolleiste. Mit Hilfe des Pfeil-Symbols führen Sie die aktuelle Abfrage aus. Alternativ können Sie die SQL-Anweisung auch nach dem Vorbild des SQL-Servers mit der Taste F5 starten.

Eine besondere Bedeutung hat das Prüf-Symbol direkt links daneben. Hiermit können Sie eine Abfrage prüfen, ohne dass hierbei die Daten verändert werden. Dies ist insbesondere bei komplexen Löschabfragen hilfreich.

öffnen undspeichern vonAbfragen

Eine weitere wichtige Funktion ist das Speichern und öffnen einer Abfrage.

Zu diesem Zweck stehen im Kopfbereich zwei entsprechende Symbole zur Verfügung.

Im Gegensatz zum Query-Analyzer des SQL-Servers werden die Abfragen jedoch nicht in Text-Dateien, sondern innerhalb der Datenbank als normale Access-Abfragen gespeichert.

Auch beim Laden einer Abfrage greifen Sie auf alle Access-Abfragen zu.

Beim Laden einer Abfrage ändert sich der Eingabebereich des Query-Analyzers in eine Auswahlliste (s. Abb. 6).

Hier können Sie eine Abfrage durch einen Doppelklick auswählen, deren SQL-Anweisung dann im Eingabebereich angezeigt wird.

Private Sub ExecuteSQL(CheckOnly As Boolean)
    Dim SQLError As Boolean
    If SQL = "" Then
        MsgBox "Bitte geben Sie eine SQL-Anweisung ein!", vbInformation
        Exit Sub
    End If
    Me.txtMessage.Value = ""
    If ReturnsData() Then
        If CheckOnly = False Then
            Me.lstData.RowSource = SQL
            Me.lstData.Requery
            On Error Resume Next
            Me.lstData.ColumnCount = Me.lstData.Recordset.Fields.Count
            If Err = 0 Then
                SQLError = False
            Else
                SQLError = True
            End If
            On Error GoTo 0
        End If
        If SQLError = True Or CheckOnly = True Then
            Dim tempData As New Recordset
            With tempData
                .ActiveConnection = CurrentProject.Connection
                .Source = SQL
                .CursorType = adOpenStatic
                .LockType = adLockReadOnly
                .CursorLocation = adUseClient
                On Error Resume Next
                .Open
                If Err <> 0 Then
                    Me.txtMessage.Value = Err.Description
                    Me.tabMessage.SetFocus
                    Me.tabData.Visible = False
                Else
                    If CheckOnly Then
                        Me.txtMessage.Value = "Die SQL-Anweisung wurde erfolgreich " _                            & "geprüft"
                        Me.tabMessage.SetFocus
                        Me.tabData.Visible = False

Quellcode 1 (Start)

                    Else
                        Me.tabData.Visible = True
                        Me.tabData.SetFocus
                    End If
                End If
            End With
        Else
            Me.tabData.Visible = True
            Me.tabData.SetFocus
            Me.txtMessage.Value = CStr(Me.lstData.ListCount - 1) _                & " Datensätze abgefragt"
        End If
    Else
        Me.tabMessage.SetFocus
        Me.tabData.Visible = False
        Dim RecordsAffected As Long
        If CheckOnly Then CurrentProject.Connection.BeginTrans
        On Error Resume Next
        CurrentProject.Connection.Execute SQL, RecordsAffected
        If Err <> 0 Then
            Me.txtMessage.Value = Err.Description
        Else
            If CheckOnly Then
                Me.txtMessage.Value = "Die SQL-Anweisung wurde erfolgreich geprüft"
            Else
                Me.txtMessage.Value = CStr(RecordsAffected) & " Datensätze betroffen"
            End If
        End If
        If CheckOnly Then CurrentProject.Connection.RollbackTrans
    End If
    Me.txtSQL.SetFocus
    Me.txtSQL.SelLength = 0
End Sub

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

Workplace

Jahresabonnement TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar