SQL String, Syntax und Zeilenumbruch

Hallo Gemeinde,

ich habe eine Variable, die in einen SQL String übersetzt wird. Da Access jedoch nicht mehr als 25 Zeilenumbrüche akzeptiert, möchte ich die Inhalte von VALUES alle in einer Zeile schreiben.

Leider komme ich mit der korrekten Syntax nicht zurecht.

Const cDQ As String = """"

Sub...

strSQL = "INSERT INTO " \_
& "Audit (EditDate, User, RecordID, SourceTable, " \_
& " SourceField, BeforeValue, AfterValue, AuditFirma) " \_
& "VALUES (Now()," \_
& cDQ & Environ("username") & cDQ & ", " \_
& cDQ & recordid.Value & cDQ & ", " \_
& cDQ & frm.RecordSource & cDQ & ", " \_
& cDQ & .NAME & cDQ & ", " \_
& cDQ & varBefore & cDQ & ", " \_
& cDQ & varAfter & cDQ & ", " \_
.
.
.
& cDQ & .FIRMA & cDQ & ")"

Versuche ich mehrere Value-Werte in einer Reihe zu schreiben, erfolgt ein Error.

Ich erhalte immer die Fehlermeldung:
Syntaxfehler in Zeichenfolge in Abfrageausdruck „“"’)’.
3075

Wer hat eine Lösungsidee??

Vielen Dank im Voraus.

Grüsse aus Osnabrück,
Hans

Moin, Hans,

schau Dir mal den strSQL vor der Ausführung mit debug.print genauer an. cDQ bekommt den Wert ", ob das passt, überblicke ich jetzt nicht. Wenn ich Strings in einen String einbaue, verwende ich unterwegs grundsätzlich den ', den " nur vorn und hinten als Delimiter.

Gruß Ralf

Hallo Ralf,

also so wie es geschrieben steht, funktioniert es (bis 25 Zeilenumbrüche).
Ich weiss nur nicht, wie die Syntax lautet, wenn man alles in einer Zeile haben möchte.

Grüsse aus Osnabrück,
Hans

Hallo Gemeinde, Grundlagen STRING

Ein String wird durch das Zeichen " (Gänsefüßchen) geöffnet und geschlossen.

Beispiel: „Das ist ein String“
(Wie die Endstopfen eines Rohres werden die " angewandt)

Wird ein STRING unterbrochen, gilt das gleiche wie für ein Rohr, es muss an beiden Trennstellen „abgedichtet“ werden.

Beispiel: "Dieser Satz wurde " & „hier getrennt“
Mit dem kaufmännischen UND (&amp:wink: verbindet man String(teile).

Arbeitet man nun mit Variablen, die ebenfalls vom Typ STRING sind, so sind diese in den Ersatz-Anführungszeichen = Hochkomma einzuschließen.

Beispiel: „Ein String mit einer ‚Variable‘ die eingeschlossen ist“

Da Variablen nicht evaluiert (aufgelöst) werden innerhalb eines Strings, sind diese aus dem String zu lösen.

Beispiel:
„Ein String mit einer '“ & Variable & „’ die eingeschlossen ist“

Man beachte die einzelnen Teile des Strings:
„Ein String mit einer '“

Hallo,

Ich weiss nur nicht, wie die Syntax lautet, wenn man alles in
einer Zeile haben möchte.

etwa so:

Const cDQ As String = „“""
’ oder Const cDQ As String = „’“

strSQL = „INSERT INTO Audit (EditDate, User, RecordID, SourceTable, SourceField, BeforeValue, AfterValue, AuditFirma) VALUES (Now(),“ _
& cDQ & Environ(„username“) & cDQ & „,“ & recordid.Value & ", " _
& cDQ & frm.RecordSource & cDQ & ", " & cDQ & .NAME & cDQ & ", " & cDQ & varBefore & cDQ & ", " & cDQ & varAfter & cDQ & ", " & cDQ & .FIRMA & cDQ & „)“

Übersichtlicher:

strSQL = „INSERT INTO Audit (EditDate, User, RecordID, SourceTable, SourceField, BeforeValue, AfterValue, AuditFirma) VALUES (Now(),’“ & Environ(„username“) & „’,“ & recordid.Value „,’“ & frm.RecordSource & „’,’“ & .NAME & „’,’“ & varBefore & „’,’“ & varAfter & „’,’“ & .FIRMA & „’)“

Bei varBefore und varAfter habe ich so meine Bedenken, ob der Datentyp immer Text ist und bleibt.