Debuggen von SQL-SELECT-Anweisungen

Ein Formular zur Abfrageerstellung

Um dem Benutzer die Eingabe und Speicherung von SQL-Abfragen zu ermöglichen, benötigen Sie ein Formular (Bild 1), das mindestens über folgende Steuerelemente verfügt:

  • ein Textfeld txtSQL für die Eingabe der SQLAnweisung;

  • ein Textfeld txtErgebnis für die Ausgabe der Fehlermeldungen;

  • eine Schaltfläche bttSpeichern zum Speichern der SQL-Anweisung;

  • eine Schaltfläche bttPruefen, um die Prüfung zu ermöglichen.

Bild 1: Aufbau des Formulars.
Bild 1: Aufbau des Formulars.

Für die Schaltfläche bttSpeichern setzen Sie die Eigenschaft Aktiviert auf Nein, damit Sie die Schaltfläche erst dann freigeben können, wenn eine korrekte SQL-Anweisung eingegeben wurde.

Nun müssen Sie noch für beide Schaltflächen je eine Ereignisprozedur für das Click-Ereignis erstellen und für das Textfeld txtSQL eine Ereignisprozedur für das Change-Ereignis. Diese Prozeduren füllen Sie mit dem in Listing 2 gezeigten Code. Die Ereignisprozedur für das Change-Ereignis stellt sicher, dass der Speichern-Button wieder deaktiviert wird, wenn der Benutzer nach der Prüfung der SQL-Anweisungen Änderungen im Feld vornimmt. Er könnte sonst nachträglich eine korrekte SQL-Anweisung verändern und doch wieder Fehler einbauen, die dann mit gespeichert würden.

Private Sub bttPruefen_Click()
Dim strFehler As String
Dim boolErg As Boolean
strFehler = ""
boolErg = SyntaxCheck(Me.txtSQL.Value, _
Application.CurrentProject.Connection, _
strFehler)
If boolErg = False Then
Me.txtErgebnis.Value = "FEHLER: " & strFehler
Me.bttSpeichern.Enabled = False
Else
Me.bttSpeichern.Enabled = True
Me.txtErgebnis.Value = "OK!"
End If
End Sub
Private Sub bttSpeichern_Click()
'Speichert die SQL-Anweisung als Abfrage
Dim objQD As QueryDef
Dim strName As String
strName = InputBox("Bitte geben Sie den Namen ein, " & _
"unter dem die Abfrage gespeichert werden soll: ", _
"Abfragename")
On Error GoTo FEHLER
'Abfrage speichern
Set objQD = Application.CurrentDb.CreateQueryDef( _
strName, Me.txtSQL.Value)
Me.txtErgebnis.Value = "Abfrage " & strName & " gespeichert!"
Exit Sub
FEHLER:
Me.txtErgebnis.Value = "FEHLER: Die Abfrage konnte " & _
"nicht gespeichert werden" & _
", folgender Fehler trat auf: " & _
vbCrLf & Err.Description
Exit Sub
End Sub
Private Sub txtSQL_Change()
Me.bttSpeichern.Enabled = False
End Sub