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.
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