BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> 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

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
TomH
! Supporter - Spende !
Beiträge: 10
Registriert: Do 2. Jun 2022, 17:55

Texteingabefeld mit Apostroph - Problem in SQL

Beitrag von TomH » Mi 12. Okt 2022, 14:59

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

F3K Total
Beiträge: 2410
Registriert: So 10. Apr 2011, 10:10

Re: Texteingabefeld mit Apostroph - Problem in SQL

Beitrag von F3K Total » Mi 12. Okt 2022, 15:22

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.
TomH hat geschrieben:
Mi 12. Okt 2022, 14:59
... SQL-Insert oder -Update-Form ...
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

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Texteingabefeld mit Apostroph - Problem in SQL

Beitrag von RobertG » Mi 12. Okt 2022, 20:21

Für den Makroweg hier aus dem Handbuch LO 7.4
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.

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
Es handelt sich hier um eine Funktion. Eine Funktion nimmt einen Wert auf und liefert anschließend auch einen Gegenwert zurück.
Text wird also so vor der Speicherung in Makros bearbeitet:

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

TomH
! Supporter - Spende !
Beiträge: 10
Registriert: Do 2. Jun 2022, 17:55

Re: Texteingabefeld mit Apostroph - Problem in SQL

Beitrag von TomH » Mo 14. Nov 2022, 08:45

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.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Texteingabefeld mit Apostroph - Problem in SQL

Beitrag von RobertG » Mo 14. Nov 2022, 12:29

… 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

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 ❤️

Antworten