🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst] SQL-Befehl: Column wird nicht richtig zugeordnet

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
teuff
! Supporter - Spende !
Beiträge: 11
Registriert: Di 26. Mär 2013, 20:13

[gelöst] SQL-Befehl: Column wird nicht richtig zugeordnet

Beitrag von teuff » So 26. Mär 2023, 22:17

Hallo!I

Ich möchte über LibreOffice Basic (Version 7.0.4.2 auf Debian 11 Bullseye) programmgesteuert mit INSERT INTO Datensätze anhängen. Dabei stellt sich das Problem, dass beim SQL-Befehl nur das erste Feld (Index-Schlüsselfeld) richtig erkannt wird. Bei weiteren Feldern kommt die Fehlermeldung "Column not found: XY", wobei mit XY der Wert angeführt wird, den ich eigentlich einsetzen will.

Konkrete Beispiele: Ich habe in der Tabelle "Werke" u.a. das Schlüsselfeld "WerkNr" und das Textfeld "Komp". INSERT INTO mit beiden Feldern und 2 Werten macht die Meldung, dass das Feld "Mozart" (also der 2. Wert) nicht erkannt wird. Mit dem Feld WerkNr allein wird ein entsprechender Datensatz angehängt.

Der Versuch, das Problem zu umgehen, indem ich zuerst den Datensatz nur mit dem Indexfeld anhänge und dann mit UPDATE die weiteren Werte einsetze, scheitert. Dann kommt jedes Mal die Fehlermeldung "Column not found", diesmal mit dem Schlüsselfeld genauso wie mit dem Textfeld. Und der Fehler kommt im Basic-Code ebenso wie in der direkten SQL-Anweisung über das Menü Extras > SQL. Der Einfachkeit halber schicke ich Screenshots von der Direkteingabe mit.

Die Frage ist, übersehe ich hier einen Fehler bei der Eingabe oder ist die Interpretation fehlerhaft?

Grüße, teuff
Dateianhänge
Insert1.png
Insert1.png (32.66 KiB) 1050 mal betrachtet
Insert2.png
Insert2.png (30.58 KiB) 1050 mal betrachtet
Update1.png
Update1.png (31.99 KiB) 1050 mal betrachtet
Update2.png
Update2.png (32.16 KiB) 1050 mal betrachtet
Zuletzt geändert von teuff am Mo 27. Mär 2023, 17:46, insgesamt 1-mal geändert.

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: SQL-Befehl: Column wird nicht richtig zugeordnet

Beitrag von RobertG » Mo 27. Mär 2023, 08:29

Feldnamen und Tabellennamen musst Du in der Regel maskieren. In Base für die internen Datenbanken funktioniert das mit dem doppelten Anführungszeichen. Das bedeutet gleichzeitig: Alles, was Du in doppelte Anführungszeichen setzt, wird als Feldname gedeutet. "Mozart" ist in SQL also die Bezeichnung für ein Feld, nicht für den Inhalt.

Setzte Inhalte in einfache Anführungszeichen. Bei Zahlen kannst Du das auch weglassen. Denke bei Dezimalzahlen daran, dass die mit einem Dezimalpunkt versehen müssen, denn ein Komma trennt Inhalte in SQL.

Also

Code: Alles auswählen

INSERT INTO "Werke" ("WerkNr", "Komp") VALUES (2045, 'Mozart')
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

teuff
! Supporter - Spende !
Beiträge: 11
Registriert: Di 26. Mär 2013, 20:13

Re: SQL-Befehl: Column wird nicht richtig zugeordnet

Beitrag von teuff » Mo 27. Mär 2023, 17:49

RobertG hat geschrieben:
Mo 27. Mär 2023, 08:29
Feldnamen und Tabellennamen musst Du in der Regel maskieren. In Base für die internen Datenbanken funktioniert das mit dem doppelten Anführungszeichen. Das bedeutet gleichzeitig: Alles, was Du in doppelte Anführungszeichen setzt, wird als Feldname gedeutet. "Mozart" ist in SQL also die Bezeichnung für ein Feld, nicht für den Inhalt.

Setzte Inhalte in einfache Anführungszeichen. Bei Zahlen kannst Du das auch weglassen. Denke bei Dezimalzahlen daran, dass die mit einem Dezimalpunkt versehen müssen, denn ein Komma trennt Inhalte in SQL.

Also

Code: Alles auswählen

INSERT INTO "Werke" ("WerkNr", "Komp") VALUES (2045, 'Mozart')
Danke, das hat mein Problem gelöst.


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten