boolean aus Calc nach Base (Firebird) importieren

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
SdKfz171
Beiträge: 5
Registriert: Fr 31. Mai 2019, 13:27

boolean aus Calc nach Base (Firebird) importieren

Beitrag von SdKfz171 » Fr 31. Mai 2019, 13:43

Hallo zusammen,

ich habe eine Calc-Datei, aus der ich immer wieder Werte nach Base importiere. Hier ist eine Spalte enthalten, die in Base als boolean definiert ist.
Zu HSQL Zeiten war in dieser Spalte entweder eine 1 oder ein 0 und die Spalte war in Calc als Zahl formatiert.
das hat wunderbar funktioniert.
Nun habe ich die DB nach Firebird migriert und der Import funktioniert nicht mehr.
Spalte als numerisch mit 0, 1 geht nicht (sowohl 1 als auch 0 wird gnadenlos als true interpretiert)
Spalte als Text mit 0 und 1: egal, gleiches Ergebnis wie bei numerisch
Spalte als Text mit true und false (das kommt heraus, wenn ich aus der DB zurück nach Calc kopiere): Egal. true und false wird gnadenlos als true interpretiert.
Spalte als Wahrheitswert mit FALSCH oder WAHR: egal: FALSCH und WAHR wird immer als true interpretiert.
Und in allen 3 Versionen bekomme ich die Meldung "incorrect type for setString. Möchten Sie trotzdem fortfahren?"

Welchen super geheimen Trick muss man denn ausführen um nach der Firebird Umstellung noch boolean Werte aus Cacl in die DB zu bekommen?????

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

Re: boolean aus Calc nach Base (Firebird) importieren

Beitrag von RobertG » Fr 31. Mai 2019, 15:09

Hallo sd...,

um das nachvollziehen zu können wäre es gut, wenn Du zumindest die Eigenschaften des aufnehmenden Feldes in Firebird angibst. Hast Du da ein Zahlenfeld, ein Booleanfeld oder was sonst definiert.

Es gibt bei dem Kopieren von Daten von außerhalb in eine Datenbank hinein leider immer wieder Probleme, weil die Datentypen nicht richtig angepasst sind. Für eine Bugmeldung wäre hier ein einfaches Beispiel sinnvoll.

Gruß

Robert

SdKfz171
Beiträge: 5
Registriert: Fr 31. Mai 2019, 13:27

Re: boolean aus Calc nach Base (Firebird) importieren

Beitrag von SdKfz171 » Fr 31. Mai 2019, 15:24

Naja, das Feld in der Tabelle ist ein "Ja/Nein (boolean)" Feld. Ich hatte gedacht, das wäre aus dem Satz "die in Base als boolean definiert ist" jklar geworden.
Defaultwert ist übrigens "Nein", also genau das Gegenteil von dem Wert, den er reinschreibt, egal was in der Calc-Spalte drin steht.

SdKfz171
Beiträge: 5
Registriert: Fr 31. Mai 2019, 13:27

Re: boolean aus Calc nach Base (Firebird) importieren

Beitrag von SdKfz171 » Fr 31. Mai 2019, 15:33

Nochmal etwas detaillierter:

Tabelle:

Artist INTEGER
Medium INTEGER
Titel Text VARCHAR
Titelnummer SMALLINT
Medien-Nummer SMALLINT
Filename VARCHAR
Laenge SMALLINT
Einstufung SMALLINT
Bitrate SMALLINT
Sound SMALLINT
Kommentar VARCHAR
Live BOOLEAN Defaultwert Nein (false)
vocals INTEGER

Einizufügende Zeile Beispiel: (Textwerte)
3222
6443
You Need
3
1
03-You Need.mp3
283
2
192
0

0
2

Das vorletzte Feld ist der Knackpunkt. Mit der "0" hat er in HSQL ein false eingetragen.
Jetzt ist es eigentlich egal, ob ich "0", "false", "FALSCH", "nein", "no" eintrage, das Feld in Calc als Zahl, Text oder Wahrheitsfeld definiert ist, im Ergebnis in Firebird steht in der Tabelle immer true.

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

Re: boolean aus Calc nach Base (Firebird) importieren

Beitrag von RobertG » Fr 31. Mai 2019, 20:54

Habe das jetzt einmal getestet. Was mir an der Beschreibung fehlte und darauf hindeutet, dass da etwas grundsätzlich falsch läuft. Es kommt eine Fehlermeldung für das Boolean-Feld:
"Incorrect type for setString"
Da scheint also etwas beim Import daraus einen String machen zu wollen. Dann wird aus beliebigem Text immer eine Füllung erkannt und daraus dann TRUE abgeleitet und wenn das Feld leer ist, dann wird daraus NULL. Die Einstellung FALSE kommt da überhaupt nicht zum Zuge.

Nur innerhalb von Firebird wird hier von einer Tabelle zur nächsten ein Boolean-Feld korrekt ausgefüllt.

Ich habe bei LO im Bugtracker nachgesehen. Ist noch nicht gemeldet. Wenn ich dazu komme werde ich das erledigen.

Grundsätzlich: Firebird wird zwar nicht mehr als experimentell ausgegeben. Ich selbst arbeite damit aber noch nicht, da noch zu viele Probleme beim Umstieg zu bewältigen sind und immer noch unerwünschte Effekte auftauchen.

Gruß

Robert

SdKfz171
Beiträge: 5
Registriert: Fr 31. Mai 2019, 13:27

Re: boolean aus Calc nach Base (Firebird) importieren

Beitrag von SdKfz171 » Fr 31. Mai 2019, 21:35

Vielen Dank dann schon für das Anlegen des Bugs.
Dann weiß ich ja, dass ich prinzipiell nichts verkehrt gemacht habe und nur etwas Geduld brauche bis sich jemand darum gekümmert hat.

Bisher war das mein einziges Problem und die Performance von Firebird ist deutlich besser. Deswegen werde ich mir solange irgendwie anders behelfen aber zurück gehe ich nicht mehr.

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

Re: boolean aus Calc nach Base (Firebird) importieren

Beitrag von RobertG » Fr 31. Mai 2019, 22:03

So, der Bugreport ist da:
https://bugs.documentfoundation.org/sho ... ?id=125613
Fehlt nur noch die Bestätigung.

Behelf wäre: Das Boolean-Feld per Default als FALSE zu deklarieren und gleichzeitig NULL zu verbieten. Dann nur die Datensätze einlesen, die TRUE sind (mit dem Boolean-Feld) und anschließend die Datensätze, die FALSE sind (ohne den Inhalt des Boolean-Feldes - kann ja im Importdialog abgewählt werden).

Gruß

Robert

Wanderer
Beiträge: 269
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

Re: boolean aus Calc nach Base (Firebird) importieren

Beitrag von Wanderer » So 9. Jun 2019, 17:49

Hallo,

auf dem Gerät kann ich es nicht ausprobieren, aber angeblich ist BOOLEAN in Firebird ein Char(1) Feld mit den Werten 'T' oder 'F'
Die eigentliche Frage ist natürlich, was akzeptiert der Export-Filter...

Mfg, Jörn
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit

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

Re: boolean aus Calc nach Base (Firebird) importieren

Beitrag von RobertG » So 9. Jun 2019, 18:21

Hallo Jörn,

ich würde auf die Lösung des Bugs warten. Direkt nachdem ich den aufgegeben hatte wurde er durch Julien bestätigt und das Fehlen der korrekten updateBoolean-Methode aufgezeigt.

Gruß

Robert

nikki
Beiträge: 862
Registriert: Sa 18. Mär 2017, 22:25
Kontaktdaten:

Re: boolean aus Calc nach Base (Firebird) importieren

Beitrag von nikki » So 9. Jun 2019, 22:06

Hallo,
Wanderer hat geschrieben:
So 9. Jun 2019, 17:49
aber angeblich ist BOOLEAN in Firebird ein Char(1) Feld mit den Werten 'T' oder 'F'
das galt bis zur Version 2.5.x. Seit der Version 3.0.x gibt es auch den Feldtyp Boolean.
Gruß

------------------------------------------------------------------------------
Win.10 Prof. 64-bit, LO 6.2.5 (x64), LO 6.1.5 Portable, AOO 4.1.6

Antworten