BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!
> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Texteingabefeld mit Apostroph - Problem in SQL
Texteingabefeld mit Apostroph - Problem in SQL
Hallo zusammen,
LibreOffice Base 7.0... Windows 10
Bei der Verwendung von Text-Eingabefeldern, die abgefragt und in eine SQL-Insert oder -Update-Form übertragen werden, wird bei Einträgen von Texten mit einem ' (Apostroph) beim Versuch, diesen Text zu speichern, ein Fehler ausgegeben. Weiterhin wird die gesamte vorhandene Datei standardisiert überschrieben mit dem aktuellen Text über alle Zeilen hinweg ;ö)))
Speichere ich den mit Apostroph versehenden Text durch Markierung mit zusätzlichen Apostrophs, so funktioniert die SQL-Ausführung ohne Fehler; der dann angezeigte Text mit Apostroph wird aber beim nächsten Speichern wieder das vorher beschriebene Verhalten durchführen ;-o))))
Gibt es dazu eine generelle Lösung?
Oder muss jedes Textfeld immer wieder auf Apostrophs gescannt werden, bevor der Text in einen SQL-Befehl übertragen wird? Immer wieder scannen, mit Apostrophs ergänzen und dann abspeichern?
Oder gibt es eine Möglichkeit, die Eingabe eines Apostrophs generell für die Textfelder (es sind viele ;-öo)) ) auszuschliessen?
Für Tipps bin ich sehr dankbar.
Gruß Tom
LibreOffice Base 7.0... Windows 10
Bei der Verwendung von Text-Eingabefeldern, die abgefragt und in eine SQL-Insert oder -Update-Form übertragen werden, wird bei Einträgen von Texten mit einem ' (Apostroph) beim Versuch, diesen Text zu speichern, ein Fehler ausgegeben. Weiterhin wird die gesamte vorhandene Datei standardisiert überschrieben mit dem aktuellen Text über alle Zeilen hinweg ;ö)))
Speichere ich den mit Apostroph versehenden Text durch Markierung mit zusätzlichen Apostrophs, so funktioniert die SQL-Ausführung ohne Fehler; der dann angezeigte Text mit Apostroph wird aber beim nächsten Speichern wieder das vorher beschriebene Verhalten durchführen ;-o))))
Gibt es dazu eine generelle Lösung?
Oder muss jedes Textfeld immer wieder auf Apostrophs gescannt werden, bevor der Text in einen SQL-Befehl übertragen wird? Immer wieder scannen, mit Apostrophs ergänzen und dann abspeichern?
Oder gibt es eine Möglichkeit, die Eingabe eines Apostrophs generell für die Textfelder (es sind viele ;-öo)) ) auszuschliessen?
Für Tipps bin ich sehr dankbar.
Gruß Tom
Re: Texteingabefeld mit Apostroph - Problem in SQL
Moin,
ich habe das gerade mit LO 7.4.1 und der internen HSQL DB ausprobiert.
Keine Probleme bei der Eingabe von einem Apostroph in ein Formular-Textfeld, ob am Anfang oder Ende des Textes.
Auch nicht bei der Eingabe direkt in die Tabelle.
Zur Info, ja, klar muss bei Verwendung von SQL-Befehlen in der HSQL DB jeder Text (String) am Anfang und Ende mit einem Apostroph maskiert werden.
ALA:
Gruß R
ich habe das gerade mit LO 7.4.1 und der internen HSQL DB ausprobiert.
Keine Probleme bei der Eingabe von einem Apostroph in ein Formular-Textfeld, ob am Anfang oder Ende des Textes.
Auch nicht bei der Eingabe direkt in die Tabelle.
Bist du eventuell mit einem Makro unterwegs? Vielleicht erklärst du mal genauer was du machst?
Zur Info, ja, klar muss bei Verwendung von SQL-Befehlen in der HSQL DB jeder Text (String) am Anfang und Ende mit einem Apostroph maskiert werden.
ALA:
Code: Alles auswählen
UPDATE "Table1" SET "Valid" = True WHERE "Name" = 'Mueller'
Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO
Re: Texteingabefeld mit Apostroph - Problem in SQL
Für den Makroweg hier aus dem Handbuch LO 7.4
Text wird also so vor der Speicherung in Makros bearbeitet:Daten aus Textfeldern auf SQL-Tauglichkeit vorbereiten
Beim Speichern von Daten über einen SQL-Befehl können vor allem Hochkommata (') Probleme bereiten, wie sie z.B. in Namensbezeichnungen wie O'Connor vorkommen können. Dies liegt daran, dass Texteingaben in Daten in '' eingeschlossen sind. Hier muss eine Funktion eingreifen und die Daten entsprechend vorbereiten.Es handelt sich hier um eine Funktion. Eine Funktion nimmt einen Wert auf und liefert anschließend auch einen Gegenwert zurück.Code: Alles auswählen
FUNCTION String_to_SQL(st AS STRING) IF InStr(st,"'") THEN st = Join(Split(st,"'"),"''") END IF String_to_SQL = st END FUNCTION
Code: Alles auswählen
stText = String_to_SQL(stText)
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Texteingabefeld mit Apostroph - Problem in SQL
Hallo F3K Total, hallo RobertG
Danke für Eure Nachfragen und Tipps.
Die angesprochene Funktionalität im Zusammenhang mit SQL ist in meiner App deswegen notwendig, weil alle Änderungen auf der Formularebene per Makro in die Datenbank geschrieben werden. Und dies ist deswegen so gewollt, weil der Anwender selber entscheiden will, ob Datenänderungen gespeichert werden sollen oder nicht, die auf der Formularebene editiert, eingefügt oder geändert werden.
Für dieses Handling hatte mir RobertG noch einen Tipp gegeben, um die Änderungen per Funktion, die ein FALSE zurück gibt, zu steuern.
Eine andere Möglichkeit, Änderungen in die Datenbankspeicherung zu steuern, sehe ich bei Base nicht.
Danke (nach längerer Abwesenheit aufgrund von Urlaub und Unfall).
Gruß Tom.
Danke für Eure Nachfragen und Tipps.
Die angesprochene Funktionalität im Zusammenhang mit SQL ist in meiner App deswegen notwendig, weil alle Änderungen auf der Formularebene per Makro in die Datenbank geschrieben werden. Und dies ist deswegen so gewollt, weil der Anwender selber entscheiden will, ob Datenänderungen gespeichert werden sollen oder nicht, die auf der Formularebene editiert, eingefügt oder geändert werden.
Für dieses Handling hatte mir RobertG noch einen Tipp gegeben, um die Änderungen per Funktion, die ein FALSE zurück gibt, zu steuern.
Eine andere Möglichkeit, Änderungen in die Datenbankspeicherung zu steuern, sehe ich bei Base nicht.
Danke (nach längerer Abwesenheit aufgrund von Urlaub und Unfall).
Gruß Tom.
Re: Texteingabefeld mit Apostroph - Problem in SQL
… und: ist jetzt das Problem mit der Funktion zum Maskieren von einfachen Anführungszeichen gelöst?
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
An alle, die das LibreOffice-Forum nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
❤️ Vielen lieben Dank für Ihre Unterstützung ❤️