❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ 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) Default-Wert bei Boolean-Feld in HSQL 2.3.2

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Freischreiber
* LO-Experte *
Beiträge: 837
Registriert: Fr 28. Mär 2014, 10:41

(gelöst) Default-Wert bei Boolean-Feld in HSQL 2.3.2

Beitrag von Freischreiber » Sa 3. Jan 2015, 17:40

Hallo,

bei mir ist ein Problem mit Wahrheitswerten aufgetaucht. Nach Umstieg auf eine Split-Datenbank sind Ja-Nein-Spalten (Boolean), die vorher als Default "true" hatten, auf Default "false" gesetzt.

Ich schaffe es auch nicht, ihr wieder einen Defaultwert "True" zu verpassen.

Ich versuche es mit:

Code: Alles auswählen

alter table "t-auftraege" alter column "Offen" set default 'true'
Keine Fehlermeldung, "1: Befehl erfolgreich ausgeführt.", Effekt gleich null! Als Defaultwert wird in der Bearbeiten-Ansicht, auch nach Neustart der Datei, "Nein" angezeigt, und beim Hinzufügen eines Datensatzes wird das auch so gemacht.

Dann habe ich versucht, die Eingabepflicht der Spalte wegzubekommen und Eingabepflicht und Default zusammen zu setzen, mit

Code: Alles auswählen

ALTER TABLE "t-auftraege" ALTER COLUMN "Offen" SET NULL
Das hat funktioniert. Anschließend scheitert aber

Code: Alles auswählen

ALTER TABLE "t-auftraege" ALTER COLUMN "Offen" SET DEFAULT TRUE NOT NULL
mit der Fehlermeldung "1: unexpected token: NOT"

Gruß
Freischreiber
Zuletzt geändert von Freischreiber am Do 28. Apr 2016, 10:22, insgesamt 1-mal geändert.
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

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

Re: Default-Wert bei Boolean-Feld in HSQL 2.3.2

Beitrag von RobertG » Sa 3. Jan 2015, 20:18

Hallo Freischreiber,

dann mach es doch so, wie es die Fehlermeldung sagt:
«unexpected token: NOT» - alles davor scheint dann doch wohl verständlich zu sein.
True ist kein Text sondern ein Schlüsselwort in SQL. Also nicht 'true' sondern true oder eben groß geschrieben oder groß und klein geschrieben - nur nicht mit irgendwelchen Zusätzen. Ob nun auch SET DEFAULT 1 funktioniert kann ich für die HSQL 2.3.2 nicht sagen.

Code: Alles auswählen

ALTER TABLE "t-auftraege" ALTER COLUMN "Offen" SET DEFAULT TRUE
Gruß

Robert
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

Freischreiber
* LO-Experte *
Beiträge: 837
Registriert: Fr 28. Mär 2014, 10:41

Re: Default-Wert bei Boolean-Feld in HSQL 2.3.2

Beitrag von Freischreiber » So 4. Jan 2015, 10:32

Hallo Robert,

okay, die Hochkommas ' ' hab ich erst nach längerem Rumprobieren eingefügt, weil das irgendeine Seite bei HSQL so gemacht hatte.

Als erstes hatte ich das einfache SET DEFAULT TRUE probiert, Befehl erfolgreich ausgeführt, aber kein Effekt. Deswegen wollte ich auch beides zusammen versuchen, Eingabepflicht und Defaultwert.

Jetzt wieder versucht, und zwar mit vorher gesetzter Eingabepflicht für das Feld, und auch ohne. Und auch mit 1 statt TRUE. Alles das gleiche: Befehl erfolgreich ausgeführt, aber keine Änderung: Default = Nein...

Neue Datensätze kann ich speichern in der Tabelle, also kein Schreibschutz oder so.

Rätselhaft
Freischreiber

Ergänzung:
Ich habe das Problem bei mehreren Tabellen in meiner Datenbank.
Außerdem besteht es nicht nur beim Ändern, sondern auch beim Hinzufügen neuer Spalten:

Code: Alles auswählen

alter table "t-rechnungen" add column "Offen" BOOLEAN DEFAULT TRUE NOT NULL
erstellt eine Spalte "Offen", alle Einträge sind true (Haken gesetzt), aber beim Hinzufügen neuer Datensätze wird das Feld leer erstellt, ohne Haken.
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Default-Wert bei Boolean-Feld in HSQL 2.3.2

Beitrag von F3K Total » So 4. Jan 2015, 13:41

Freischreiber hat geschrieben:Rätselhaft
Ja, sehr rätselhaft.
Nach längerer Suche, bin ich zu folgendem Ergebnis gekommen.
Wenn Tabellen nicht über das GUI erstellt werden, sondern mit reinem SQL, dann fehlt der .odb-Datei die Information über die Tabellenspalten.
Dieses Makro findet die Spalten dann nicht.

Code: Alles auswählen

sub BOOLEAN_SET_DEFAULT
    thisDatabasedocument.DataSource.Tables.getbyname("TABELLENNAME").Columns.getbyname("SPALTENNAME").ControlDefault = 1'True, 0=False
end sub
Ist der Wert ControlDefault einer Boolean Spalte auf 1, dann klappt es mit dem TRUE
Was geht, ist die Tabelle per GUI neu zu erstellen, Eingabe erforderlich: ja, Defaultwert: ja, oder eine funktionierende Tabelle zu kopieren.
EDIT: Mit AOO 411/LO435 getestet.
EDIT2: Für deine generated Column wäre das Vorgehen:
  • Tabelle mit GUI erstellen
  • generated column per SQL zufügen:

    Code: Alles auswählen

    ALTER TABLE "Namen" ADD "zusammen" VARCHAR(100) GENERATED ALWAYS AS("Nachname"||COALESCE(', '||"Vorname",''))
  • PK per SQL zufügen

    Code: Alles auswählen

    ALTER TABLE "Namen" ADD PRIMARY KEY("zusammen")
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

Freischreiber
* LO-Experte *
Beiträge: 837
Registriert: Fr 28. Mär 2014, 10:41

Re: Default-Wert bei Boolean-Feld in HSQL 2.3.2

Beitrag von Freischreiber » So 4. Jan 2015, 14:14

Hallo F3K Total,

meine Tabellen sind alle mit der GUI (in der eingebetteten Datenbank) erstellt worden, mit den Boolean-Spalten (außer bei der t-rechnungen) und mit Default=TRUE. Dann habe ich sie nach dem Herausholen aus der Base-Datei in eine neue leere Base-Datei gezogen.
Ist der Wert ControlDefault einer Boolean Spalte auf 1, dann klappt es mit dem TRUE
Kann ich das irgendwo in der Datei von Hand editieren?

Tabellen neu erstellen scheidet wohl aus, weil schon viele Datensätze drin sind.

Generated-Spalten habe ich in den Tabellen hier nicht.

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Default-Wert bei Boolean-Feld in HSQL 2.3.2

Beitrag von F3K Total » So 4. Jan 2015, 14:24

Freischreiber hat geschrieben:Kann ich das irgendwo in der Datei von Hand editieren?
ist mir nicht gelungen, weil die Spalten in der content.xml nicht zu finden sind.
Freischreiber hat geschrieben:Tabellen neu erstellen scheidet wohl aus, weil schon viele Datensätze drin sind.
Nö, mit ein bisschen Nachdenken (ggf. Beziehungen vorübergehend deaktivieren usw.) kannst Du die alte Tabelle umbenennen, die neue funktionsfähig erstellen, dann die Daten in die neue Tabelle hineinkopieren, bzw. per SQL INSERT INTO ... oder SELECT ... INTO hineinbringen.
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

Freischreiber
* LO-Experte *
Beiträge: 837
Registriert: Fr 28. Mär 2014, 10:41

Re: Default-Wert bei Boolean-Feld in HSQL 2.3.2

Beitrag von Freischreiber » So 4. Jan 2015, 17:33

Das ist ein Bug, oder?
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Default-Wert bei Boolean-Feld in HSQL 2.3.2

Beitrag von F3K Total » So 4. Jan 2015, 17:36

Keine Ahnung,
mit der GUI gehts.
Das Handling von 2/3 Boole-Werten scheint nicht so ganz einfach zu sein, oder?
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

Freischreiber
* LO-Experte *
Beiträge: 837
Registriert: Fr 28. Mär 2014, 10:41

Re: Default-Wert bei Boolean-Feld in HSQL 2.3.2

Beitrag von Freischreiber » So 4. Jan 2015, 18:06

Hallo F3K Total,

nein, gar nicht einfach... aber ich brauch diese Felder halt. Hatte gerade einen (weiteren) Wutanfall wegen diesem Base:

Wie soll man eigentlich vorgehen als Benutzer ohne Fachkenntnisse?
Interne DB nehmen? Lieber nicht, sie wird nicht sicher verwaltet und neigt zum Datenverlust.

Externe DB nehmen? Besser, aber nur mit Fachkenntnissen oder Makros möglich. Aber auch keine komplette Lösung, weil es Tabelleneinstellungen gibt, die nur in der GUI eingerichtet werden können (Defaultwerte) und andere, die nur per SQL eingerichtet werden können (Primärschüssel, Autowerte). Und wenn per GUI, dann muß man gleich die ganze Tabelle neu erstellen, ändern geht gar nicht... :x

Was wirklich zuverlässig funktioniert in LO ist die Prozedur: Wenn ein Monat vergangen ist, erhöhe die Versionsnummer um 1. "Neuerungen und Verbesserungen in Base" jeweils: nö.

Klar, jetzt kann man mich als undankbar bezeichnen. Aber mein Eindruck von LO ist wirklich, wenn man es mal mit einem Auto vergleicht: Vorne wird das Cockpit aufgehübscht (Writer und Calc), und hinten muß man statt einer zweiten Achse links einen Ski und rechts ein Skateboard benutzen.

Vielen Dank für deine unermüdliche Hilfe und bitte nicht sauer sein! Dich und RobertG und überhaupt alle aus den Hilfeforen meine ich ganz bestimmt nicht mit der Kritik.

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

Freischreiber
* LO-Experte *
Beiträge: 837
Registriert: Fr 28. Mär 2014, 10:41

Re: Default-Wert bei Boolean-Feld in HSQL 2.3.2

Beitrag von Freischreiber » Mo 5. Jan 2015, 09:38

Hallo F3K Total,

es scheint wirklich ein ernstes Problem zu sein. Ich habe folgendes versucht:
Kopieren und Einfügen der Tabelle über das Kontextmenü. Beim Einfügen öffnet sich ein Assistent, man kann Definitionen und Inhalt auswählen und Spaltenformatierungen übernehmen. Hier kann man auch Eingabepflicht auf Ja und Defaultwert auf Wahr setzen. Die Tabelle funktioniert dann auch so.

Aber: wenn ich diese kopierte Tabelle dann so einpflegen will:
- Nachbilden der Beziehungen mit der neuen Tabelle
- Löschen der Beziehungen der alten Tabelle - Speichern der Beziehungen
- Umbenennen der alten Tabelle - Neustart LO
- Umbenennen der neuen Tabelle auf den alten Namen - Neustart LO,

dann habe ich am Schluß eine Tabelle, die wieder so heißt, alle Inhalte hat, aber den Defaultwert wieder auf False hat!

Vielleicht solltest du oder ein anderer, der das technisch richtig einordnen kann, wirklich eine Bugmeldung schreiben. Ich könnte mich dann gerne mit einem Kommentar "dranhängen", kann aber so eine Bugmeldung selbst nicht richtig formulieren.

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de


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