Tipp 4.13 - Text an SQL-String

Wie kann ich Textwerte im Code korrekt an einen SQL-Ausdruck übergeben?

Texte werden in SQL-Ausdrücken grundsätzlich mit Anführungszeichen (") bzw. Apostrophen (') angegeben.

Wenn Sie jedoch innerhalb Ihres Textes selber Apostrophen bzw. Anführungszeichen verwenden, oder nicht genau wissen, ob diese Zeichen im Text vorkommen könnten, stoßen Sie recht bald auf Probleme. Microsoft Access quittiert das Fehlen der korrekten Schreibweise, nämlich die Verdoppelung der Zeichen, mit einem Laufzeitfehler. Abhilfe schafft unsere kleine Routine MakeQuotes. Kopieren Sie einfach nachfolgenden Quellcode in die Zwischenablage und fügen Sie anschließend den Inhalt der Zwischenablage in ein neues Modul ein. Die Aufrufparameter finden Sie im Quellcode beschrieben.

Beispiel:

' Text an SQL-String
Function MakeQuotes(ByVal psValue As String) As String
 
  '// -----------------------------------------------------
  '// Methode   | Überprüft Text auf Anführungszeichen
  '               und wandelt diesen in eine korrekten
  '               Schreibweise um
  '// -----------------------------------------------------
  '// Parameter | psValue - Textinhalt
  '// -----------------------------------------------------
  '// Rückgabe  | SQL-String-Inhalt
  '// -----------------------------------------------------
  '// Erstellt  | Manuela Kulpa
  '//           | EDV Innovation & Consulting - Dormagen
  '// -----------------------------------------------------
  '// Beispielaufruf:
  '   Inhalt des Datenbankfeldes Kunde = Hung "Owl" AllNight
  '// sSql = "... Where Firma = " & MakeQuotes(Kunde)
  '// -----------------------------------------------------
 
  Dim sOut As String
  Dim sChar As String
  Dim iFound As Integer
 
  For iFound = 1 To Len(psValue)
    sChar = Mid$(psValue, iFound, 1)
    If Asc(sChar) = 34 Then
      sOut = sOut & Chr(34) & " & " & String$(4, Chr(34)) & " & " & Chr(34)
    Else
      sOut = sOut & sChar
    End If
  Next
 
  MakeQuotes = Chr(34) & sOut & Chr(34)
 
End Function