Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 6/2003.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

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.

Leistungsumfang des
Query-Analyzers

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

Benutzung des Query-Analyzers für Access

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 und
prü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 und
speichern von
Abfragen

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

Quellcode 1 (Fortsetzung)

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Verwandte Beiträge:

Permanenter Access Query-Analyzer

Duplikate suchen und löschen

© 2003-2015 André Minhorst Alle Rechte vorbehalten.