Access Anfänger: SQL-gerechte Formatierung von Variablen

Aus DBWiki
Wechseln zu: Navigation, Suche

Anforderung

Ich möchte in einem SQL-String Variablen benutzen, wie Datum-, Double-Variablen etc.
Dabei sind die Variableninhalte in entsprechende SQL-Konstanten bzw. -Literale umzuwandeln, um der SQL-Syntax zu entsprechen.

Lösung

Das geht mit folgender Funktion, die in einem globalen Modul hinterlegt wird:

Public Function FormatiereMich(ByVal S As Variant, Optional ByVal lngDatatype As Long) As String
 
 'Quelle: www.dbwiki.net oder www.dbwiki.de
 
  If IsNull(S) Or S = "" Then
    FormatiereMich = "NULL"
  Else
    Select Case lngDatatype
    Case dbLong, dbInteger, dbByte, dbDouble, dbSingle, dbCurrency, dbDecimal
      FormatiereMich = Trim(Str(S))
    Case dbText, dbMemo
      FormatiereMich = "'" & Replace(S, "'", "''") & "'"
    Case dbBoolean
      FormatiereMich = IIf(S, "true", "false")
    Case dbDate
      FormatiereMich = "#" & Format(S, "yyyy-mm-dd") & "#"
    End Select
  End If
 
End Function

Damit werden alle Variablen entsprechend ihrem Datentyp formatiert.

Aufruf

Der Aufruf erfolgt dann beispielsweise so:

MSQL = "UPDATE DeineTabelle SET DeineTabelle.DeinDatumFeld= "
MSQL = MSQL & " & FormatiereMich(DeineDatumsvariable,dbDate) & "
MSQL = MSQL & " WHERE DeineTabelle.DeinSchluessel= " & FormatiereMich(DeineSchlüsselVariable,dbText)

Wiki-Links