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

Fehler in SQL-Anweisungen in VBA finden

Der Einsatz von SQL-Anweisungen in VBA mit der DoCmd.RunSQL oder der DB.Execute-Methode bringt das Problem mit sich, dass Fehler im SQL-String sich schlecht debuggen lassen. Der folgende Beitrag zeigt, wie Sie solche Fehler dennoch finden.

Fehler finden per Abfrage

Am besten setzt man in VBA gar keine Abfragen zusammen und lsst sie auch nicht per DoCmd.RunSQL oder DB.Execute ausfhren, sondern verwendet eine gespeicherte Abfrage mit entsprechenden Parameter. In manchen Fllen ist aber selbst Zusammenstellung der Abfrage so variabel, dass es sich nicht lohnt, alle in Frage kommenden Abfragen zu erstellen und zu speichern.

Die Verwendung der DB.Execute-Anweisung in einer VBA-Prozedur sieht etwa folgendermaen aus:

Public Sub SQLAnweisung()

    Dim db As DAO.Database

    Set db = CurrentDb

    db.Execute "UPDATE Artikel SET Preis = Preis * 0,98"

End Sub

Diese Variante enthlt einen Fehler, der zu einer entsprechenden Fehlermeldung fhrt (3144, Syntaxfehler in Update-Anweisung).

Es wird allerdings nur die fehlerhafte Zeile markiert, aber weitere Informationen ber die Art des Fehlers bleiben aus, und wenn die SQL-Anweisung nun nicht so berschaubar und der Fehler so leicht zu entdecken ist wie in diesem Fall, kann schon eine Menge Zeit zum Finden des Fehlers draufgehen.

Um den Fehler einfacher zu finden, gehen Sie einfach folgendermaen vor:

Bauen Sie die Prozedur wie folgt um, indem Sie die SQL-Anweisung in einer String-Variablen speichern und vor dem Aufruf in der DB.Execute-Anweisung im Testfenster ausgeben.

Public Sub SQLAnweisung()

    Dim db As DAO.Database

    Dim strSQL As String

    Set db = CurrentDb

    strSQL = "UPDATE Artikel SET Preis = Preis * 0,98"

    Debug.Print strSQL

    db.Execute strSQL

End Sub

Die Abfrage knnen Sie nun aus dem Testfenster in die SQL-Ansicht einer neuen, leeren Abfrage kopieren und das Ergebnis dieser Abfrage in der Datenblattansicht anzeigen lassen.

Dazu schlieen Sie an der entsprechenden Stelle den Dialog Tabellen anzeigen und wechseln dann in die SQL-Ansicht (Menbefehl Ansicht/SQL-Ansicht). Dort kopieren Sie den SQL-Ausdruck hinein und wechseln zur Datenblattansicht.

Hier erscheint die gleiche Fehlermeldung und in der SQL-Ansicht wird die Einfgemarke an die Stelle des Fehlers gesetzt. In dem Fall befindet sich diese Stelle direkt hinter dem letzten Zeichen der SQL-Abfrage, was auf ein Problem mit dem letzten Ausdruck hinweist. Auch hier ist noch ein wenig Hinsehen und berlegen angesagt, aber man kommt schnell darauf, dass man als Dezimaltrennzeichen einen Punkt statt des Kommas verwenden muss.

Wirkungsvoll bei lngeren Abfragen

Es ist klar, dass diese Methode zur Untersttzung der Fehlersuche erst bei lngeren Abfragen mit variablen Anteilen wirklich greift, da man diese im Quellcode meist nicht berblicken kann. Wenn Sie dann die endgltige Version per Abfrage untersuchen, werden Sie in den meisten Fllen mit der Nase auf fehlerhafte Stellen gestoen.

© 2003-2015 André Minhorst Alle Rechte vorbehalten.