Hallo Robert,
das größere Problem
"[...] bei Zeilen dieser Art stSql = "SELECT ""ID"" FROM """+NameTabelle1+""" WHERE """+NameTabellenFeld1+"""='"+stInhalt+"'" sind +NameTabelle1+ | +NameTabellenFeld1+ | +stInhalt+ rot eingefärbt [...]"
konnte ich mit
' 7 Datenbank-Makro (optional)
If (DBM = "ja" ) Then
' 7.1 Zeichenkette rückfärben:
oRD.SearchString = """.*(""'|'""|'.'|.'.).*"""
aAttR(0).Name = "CharColor"
aAttR(0).Value = Red
oRD.SetReplaceAttributes(aAttR())
oRD.ReplaceString = "&"
oDok.replaceAll(oRD)
' 7.2 MacroCode rückfärben:
oRD.SearchString = "\+[[:alnum:]|_]+\+"
aAttR(0).Name = "CharColor"
aAttR(0).Value = Green
oRD.SetReplaceAttributes(aAttR())
oRD.ReplaceString = "&"
oDok.replaceAll(oRD)
' 7.3 +-Zeichen rückfärben:
oRD.SearchString = "\+"
aAttR(0).Name = "CharColor"
aAttR(0).Value = BlueNA
oRD.SetReplaceAttributes(aAttR())
oRD.ReplaceString = "&"
oDok.replaceAll(oRD)
EndIf
lösen.
Dazu müsste ich noch wissen, welche Regeln für diese Bezeichner zwischen 2 +-Zeichen gelten. Ich habe mich jetzt mal an den Regeln für Variablen orientiert: alpha-numerisch und Unterstrich.
So etwas
FUNCTION String_to_SQL(st AS STRING)
IF InStr(st,"'") THEN
st = Join(Split(st,"'"),"''")
kann ich nicht kompensieren, zu viele Nebeneffekte. Da hilft nur alternative Kodierung, die unter dem Aspekt Kode-Lesbarkeit auch vertretbar ist, wenn man nicht manuell nachfärben möchte:
FUNCTION String_to_SQL(st AS STRING)
IF InStr(st,Chr(39)) THEN
st = Join(Split(st,Chr(39)),Chr(39) & Chr(39))
oder via
Dim EA As String : EA = Chr(39) ' Einfaches Anführungszeichen
FUNCTION String_to_SQL(st AS STRING)
IF InStr(st,EA) THEN
st = Join(Split(st,EA),EA & EA)
Gilt auch für:
Feldtrenner = Join(Split(aErster(1),"'"),"")
Dies
REM Funktion, um gegebenenfalls auch " ' " in einem String bei der Eingabe in die Datenbank zu ermöglichen. Bei dBase notwendig.
konnte ich durch Umstellung der Kolorierung der REM-Kommentare als letzten Makro-Abschnitt kompensieren.
Würde obiger Kommentar mit einem ' eingeleitet, müsste man sich für das " ' " eine andere Schreibweise/Formulierung ausdenken, sonst gibts ne Fehlfärbung.
Neues Ergebnis "Robert.odt" und "Robert_MOD.ods" (mit eingebauten Kodierungsvorschlägen bezüglich Chr(39)) via CC: an Dich.
Ich habe jetzt keine Fehlfärbungen (@ Robert_MOD.ods) mehr gefunden, was allerdings bei einem Test mit nur einem Datenbank-Makro nicht unbedingt repräsentativ ist ...
Gruß
Hans-Werner :-))