Seite 1 von 1

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

Verfasst: So 26. Mär 2023, 22:17
von teuff
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

Re: SQL-Befehl: Column wird nicht richtig zugeordnet

Verfasst: Mo 27. Mär 2023, 08:29
von RobertG
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')

Re: SQL-Befehl: Column wird nicht richtig zugeordnet

Verfasst: Mo 27. Mär 2023, 17:49
von teuff
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.