Krug-Markus.de

Variablen Syntax in SQL Strings unter VBA

Variablen Syntax in SQL Strings unter VBA

SQL Statements werden unter VBA wahlweise gleich in einen String oder idealer, in einer String-Variable definiert.

Beispiel für ein SQL Statement in einer String-Variable:


Sub SQL_Beispiel()

Dim query1 As String

query1 = "Select Spalte from Tabelle
where
     Spalte3 = ZahlenWert
and
     Spalte2 ='StringWert'
and
     Spalte3 = 'DatumsWert' "

End Sub

Jetzt sollen die Werte für Tabellenname, Spalte, Spalte1, Spalte2 und Spalte3 durch Variablen ersetzt werden.


Sub SQL_Beispiel_mit_Variablen()

Dim query1 As String

query1 = "Select " + String-Spaltenname + "
from
      " + String-Tabellenname + "
where
      Spalte3 = " & ZahlWert & "
and
      Spalte2 ='" + StringWert + "'
and
      Spalte3 = '" & Datum & "' "

End Sub

Wenn wir jetzt genau hinschauen, gibt es Unterschiede in der Syntax bei den unterschiedlichen Variablentypen String, Integer und Date.

Zunächst zur Syntax von SQL. Innerhalb der Anführungszeichen der VBA Stringvariable gilt die Syntax von SQL ANSI.

String- (VarChar)  Und Datums-Werte(Date)  werden in der SQL Syntax in einfachen Anführungszeichen gesetzt.  Zahlen-Werte( Number) ohne Anführungszeichen. Damit VBA Variablen innerhalb der SQl Syntax genutzt werden können, muss der Code gesplittet werden. D.h. der VBA String muss unterbrochen und fortgesetzt werden. Die geschieht wie üblich bei VBA mit Hilfe der doppelten Anführungszeichen. Schauen wir uns den Zahlenwert nach dem where Operator an. Mit einem doppelten Anführungszeichen wird der VBA String beendet und hier beginnt wieder die VBA Syntax.

Wenn wir nun eine Integer Variable verwenden wollen, müssen wir als Verknüpfungsoperator das & Zeichen wählen. Dann setzen  wir nach der Integer Variable wieder den Verknüpfungsoperator &. Jetzt  beginnen wir wieder mit dem VBA String mit seinem darin liegenden SQL Statement mit einem doppelten Anführungszeichen und setzen diesen fort.

Nun kommen wir an der Stelle an, an der wir eine Stringvariable für den Wert der Splate2 nutzen möchten. Es wird wieder der String mit einem doppelten Anführungszeichen beendet und die VBA Syntax beginnt. Wir müssen dabei beachten, das wir erst nach dem ersten einfachen Anführungszeichen den String beenden. Bei Stringvariablen muss als Verknüpfungsoperator das + Zeichen verwendet werden. Anschließend beginnen wir wieder mit einem doppelten Anführungszeichen den String. Wenn wir an der  Stelle für den Datums-Wert gelangt sind, beenden wir erneut mit dem doppelten Anführungszeichen den String und halten uns an der VBA Syntax.

Hier gilt eine Besonderheit zu beachten.

Datums-Werte werden unter SQL wie ein String behandelt, also in einfachen Anführungszeichen. Unsere Logik nach sollten wir dann wie bei einer String Variablen unter VBA das + Zeichen als Verknüpfungsoperator verwenden.

Dies ist dem nicht so, denn eine Datum-Variable wird unter VBA mit dem Verknüpfungsoperator & wie eine Integer Variable behandelt.  Deswegen gilt die Syntax ‚ “ & Datums-Variable & “ ‚!

Schreibe einen Kommentar