❤️ 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.
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 » Mo 5. Jan 2015, 17:33

Moin,
Freischreiber hat geschrieben: 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.
Ich sehe keinen Bug, dass die GUI nicht zu 100% mit externen Datenbanken kompatibel sein kann, weil es davon hunderte gibt, ist doch wohl klar.
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 » Mo 18. Apr 2016, 11:42

Hallo,

bei diesem Problem (kein Default "true" bei Wahrheitsfeldern in einer externen HSQL-Datenbank) habe ich jetzt zufällig eine Lösung per Formular gefunden.

Auch im Formular war bei mir bisher ein Defaultwert "true" für so ein Feld nicht möglich, obwohl da stand: "Standardstatus: Ausgewählt". Es wurde immer standardmäßig auf "false" gesetzt.

Bis ich jetzt mal spaßeshalber beim Reiter Daten das "Eingabe erforderlich" auf Nein gesetzt habe - jetzt geht es. Neue Datensätze über das Formular haben jetzt den Status "true". :D

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

Pit Zyclade
* LO-Experte *
Beiträge: 3060
Registriert: Mo 12. Nov 2012, 16:59

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

Beitrag von Pit Zyclade » Mo 18. Apr 2016, 15:49

Hallo Experten, darf ich eine nur nur ungefähr zutreffende Frage stellen?
Ich habe eine solche Tabelle mit der internen HDQLDB intern erstellt und habe verschiedene SQL-Befehle in der von euch genannten Art erstellt:

Obwohl jeweils die erfolgreiche Durchführung vermeldet wurde, hat sich an meiner Tabelle diesbezüglich nichts (!) geändert. Auch war es gleich, ob die Tabelle offen oder geschlossen war. Auch wurde ich niemals aufgefordert, irgendetwas zu sichern, was ich sehr komisch finde. Wenn ich nämlich intern den default der bolean-Funktion ändere, muß ich immer safen, bevor ich an der Tabelle arbeiten kann.

Frage: Kann man überhaupt per eingebautem SQL-Zugang eine Tabelle solchartig modifizieren?
LO 24.8.7.2 (X86_64) / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

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 18. Apr 2016, 16:15

Hallo Pit Zyclade,

ich als Nichtexperte würde aus Bequemlichkeit die interne HSQL-DB lieber mit der GUI von Base ändern statt mit SQL. So wie F3K Total oben schreibt, gibt es auch Dinge, die kann man nur an einer internen DB über die GUI einstellen.

Die oben erwähnten SQL-Kommandos ändern nicht sofort etwas sichtbar an der Tabelle. Erst wenn man neue Datensätze eingibt, müßte der Defaultwert im entsprechenden Feld vorausgefüllt werden.

Nach Änderungen würde ich Base schließen und neu starten. Bei einer externen DB merkt Base manchmal nur so, daß die DB per SQL geändert wurde. Ob das bei einer internen DB auch nötig ist, weiß ich 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

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 » Mo 18. Apr 2016, 16:48

Hallo Pit,
Pit Zyclade hat geschrieben: Ich habe eine solche Tabelle mit der internen HDQLDB intern erstellt und habe verschiedene SQL-Befehle in der von euch genannten Art erstellt:
Obwohl jeweils die erfolgreiche Durchführung vermeldet wurde, hat sich an meiner Tabelle diesbezüglich nichts (!) geändert.
Versuche einmal, in solch eine Tabelle einen neuen Datensatz über SQL einzugeben. Ich habe das gerade noch einmal getestet. Lasse ich das Boolean-Feld bei der Eingabe aus, so wird es automatisch auf TRUE gesetzt, sofern ich den Default-Wert vorher eingegeben habe.

Der Haken an der Sache ist: In der GUI wird bei der Tabelleneingabe ein Markierfeld erstellt. Wird ein Datensatz abgespeichert, so ist dieses Feld mit FALSE vorbelegt. Damit greift das Setzen des Default-Wertes nicht mehr. Der Default-Wert wird von der Datenbank nur gewählt, wenn in dem Feld keine Eingabe gemacht wurde.

Würdest Du die Eingabe z.B. über ein Formular machen, so könntest Du dem Feld den dreifachen Status zuweisen. Vielleicht hilft das, dass schließlich zum Default-Wert gegriffen wird. Oder Du lässt das Feld im Eingabeformular ganz raus. Dann wird es auf jeden Fall TRUE gesetzt, wenn das die SQL-Default-Einstellung ist.

Tatsächlich scheint mir zumindest in der aktuellen LO 5.1.1.2 dieses Feld eine nicht erwünschte Eigenschaft zu haben: Keine Eingabe und trotzdem wird das Feld nicht auf NULL gesetzt. Das ist eine Bugmeldung wert.
... und die ist bereits gemacht: https://bugs.documentfoundation.org/sho ... i?id=92509

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

Pit Zyclade
* LO-Experte *
Beiträge: 3060
Registriert: Mo 12. Nov 2012, 16:59

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

Beitrag von Pit Zyclade » Mo 18. Apr 2016, 19:50

Mein Vorgehen:
Anlage einer internen Datenbank t-Aufträge.odb mit einer Tabelle gleichen Namens (Achtung: Umlaut) mit drei Spalten „ID“, „Offen“, „sortiert“ mithilfe des GUI. Offen wurde als boolean Eingabe=nein, default=ja angelegt und drei Sätze eingespeichert. Danach wurde mit dem GUI geändert: boolean, eingabe=nein, default=nein, gespeichert und wieder drei Sätze eingegeben.

Nun wird mit SQL gearbeitet:
alter table "t-Aufträge" alter column "Offen" set default TRUE
„Befehl erfolgreich ausgeführt“
SQL-Tafel geschlossen, DB gespeichert, LO-base geschlossen.
Base, db, tabelle geöffnet und dort einen Satz ohne Offen anzufassen eingegeben.
Leider bleibt „Offen“ weiterhin false !

Nun die Tabelle mit dem GUI umgemodelt: Offen auf Ja.
Wieder alles geschlossen und geöffnet, aber erst der zweite neue Datensatz hat die geforderte Eigenschaft true.

Deshalb analog nochmals der Versuch über SQL:
alter table "t-Aufträge" alter column "Offen" set default FALSE
Aber hierbei wird bei Eingabe in die Tabelle (GUI) bei mehreren Datensätzen keine Änderung erreicht.
Danach mit der GUI auf nein gesetzt. Ohne Schließen der db wird die Änderung prompt angenommen.
Danach mit SQL auf TRUE versucht. Hat aber nach wie vor keine Wirkung bei Einagbe über GUI, auch nach Schließen/Öffnen nicht.
(Eingabe über SQL habe ich nicht versucht.)
LO 24.8.7.2 (X86_64) / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

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 » Mo 18. Apr 2016, 20:52

Hallo Pit,
Pit Zyclade hat geschrieben: Nun wird mit SQL gearbeitet:
alter table "t-Aufträge" alter column "Offen" set default TRUE
Nach dieser Eingabe ohne irgendwelche zusätzlichen Verrenkungen (Base schließen o.ä.) funktioniert der Default-Wert über die SQL-Eingabe:

INSERT INTO "t-Aufträge" ("Feld1","Feld2") VALUES('1','Zwei')

In diesem Befehl darf das Feld "Offen" nicht vorkommen oder dem Feld muss NULL zugewiesen werden. Eins der Felder muss gegebenenfalls der Primärschlüssel sein, falls kein Autowert dabei ist.

Das funktioniert alles nicht direkt in der Eingabe über die Tabelle, weil das Ankreuzfeld im nicht angekreuzten Zustand FALSE weitergibt - nicht NULL. Eigentlich müsste da ein indifferenter Zustand (TriState wie bei Markierfeldern in Formularen) erscheinen.

Mit der GUI änderst Du nie den Default-Wert. Das, was dort als Standardwert angegeben wird, wird vor der Eingabe automatisch in das Feld eingeblendet. Das ist eine Vorgabe der GUI und keine Vorgabe aus der Datenbank für leer gebliebene Felder.

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 » Di 19. Apr 2016, 09:23

Hallo Robert,
Mit der GUI änderst Du nie den Default-Wert.
Was ich meinte mit "GUI", ist das Erstellen einer neuen Tabelle mit der Base-Oberfläche (Tabellen - Tabelle in der Entwurfsansicht erstellen), als Gegensatz zum Erstellen mit SQL. Bei diesem Erstellen per GUI kann man doch einen echten Default-Wert angeben, der für die interne Datenbank auch funktioniert? (abgesehen von dem Bug).
Das, was dort als Standardwert angegeben wird, wird vor der Eingabe automatisch in das Feld eingeblendet.
Damit meinst du das Erstellen eines neuen Datensatzes per Formular?

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

Pit Zyclade
* LO-Experte *
Beiträge: 3060
Registriert: Mo 12. Nov 2012, 16:59

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

Beitrag von Pit Zyclade » Di 19. Apr 2016, 11:26

@RobertG

Ja, das klappt. Wenn man die SQL-Eingabetafel schließt, kann man in der Tabelle gleich das richtige Resultat sehen (nix Formular).

Was mich Laie bestürzt macht, dass man bei den Feldnamen "..." eingeben muß, aber bei den Werten keine "...", sondern '...' . Wenn das keine Texte sind, hätte ich erwartet, gar keine Zeichen zur Begrenzung oder wenn intern umgearbeitet wird, dieselben Begrenzer wie bei den Feldnamen.

Egal, ich bin Dir dankbar, dass Du mich erhellt hast, dass man mit SQL gleich in die DB schreibt, aber mit der GUI erst intern und später wird gesichert. So jedenfalls erkläre ich mir den Unterschied bei der Eigenschaftsänderung.
LO 24.8.7.2 (X86_64) / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

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 » Di 19. Apr 2016, 17:47

Hallo Freischreiber,
Freischreiber hat geschrieben:
Mit der GUI änderst Du nie den Default-Wert.
Was ich meinte mit "GUI", ist das Erstellen einer neuen Tabelle mit der Base-Oberfläche (Tabellen - Tabelle in der Entwurfsansicht erstellen), als Gegensatz zum Erstellen mit SQL. Bei diesem Erstellen per GUI kann man doch einen echten Default-Wert angeben, der für die interne Datenbank auch funktioniert? (abgesehen von dem Bug).
Nein, der "Defaultwert" aus der Tabellenerstellung ist nicht identisch mit dem Defaultwert der Datenbank.
Der Defaultwert der Datenbank wird dann genutzt, wenn bei der Eingabe das Feld selbst NULL ist. Der Defaultwert kann auch bei der Definition von Fremdschlüsseln genutzt werden (Beziehungsdefinition > Eigenschaften > Default setzen.
Das, was in der Tabelle als "Defaultwert" bezeichnet wird, wird direkt bei der Eingabe angezeigt. Du speicherst also mit dem Datensatz das, was Du bei der Eingabe siehst - und nicht statt NULL einen anderen Wert.
Aus dem Handbuch:
Defaultwert: Der Begriff «Defaultwert» in der GUI entspricht nicht dem, was Datenbanknutzer unter Defaultwert verstehen. Die GUI gibt hier einen bestimmten Wert sichtbar vor, der dann mit abgespeichert wird.
Der Defaultwert einer Datenbank wird in der Tabellendefinition gespeichert. Er wird dann in das Feld geschrieben, wenn es bei der neuen Erstellung eines Datensatzes nicht bearbeitet wurde und deshalb nicht im SQL-Code auftaucht. SQL-Defaultwerte erscheinen auch nicht bei der Bearbeitung der Eigenschaften einer Tabelle.
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


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