Seltsames Verhalten bei boolean Feldern in Formularen und Feldbefehlen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

saxo
**
Beiträge: 47
Registriert: Do, 01.04.2010 00:45

Seltsames Verhalten bei boolean Feldern in Formularen und Feldbefehlen

Beitrag von saxo »

Hallo,
im angehängten Formular im Feld S habe ich ein Listenfeld, das mir die Werte "H", "F" oder "" anstatt true, false anzeigen soll. Das funktioniert nur, wenn das Feld angewählt wird, also den Focus hat. Was läuft da falsch?

Wenn ich in einem Textdokument einen bedingten Text einfüge, der Werte aus einer Datenbankabfrage einfügen soll, dann scheint eine ganz andere Syntax zu gelten:
[Mat_data.Firmenkontakte.S]==True, False, Null funktioniert nicht, sondern nur [Mat_data.Firmenkontakte.S]==1, 0, ""
logische Operatoren scheinen auch nicht zu funktionieren, z.B. [Mat_data.Firmenkontakte.S]==1 AND [Mat_data.Firmenkontakte.xy]==0
Dateianhänge
Test_Bool.odb
(18.15 KiB) 135-mal heruntergeladen
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Seltsames Verhalten bei boolean Feldern in Formularen und Feldbefehlen

Beitrag von RobertG »

Hallo Saxo,

ich würde das so regeln, dass möglichst viel davon über die Datenbank erledigt wird. Gerade bei TRUE und FALSE in Listen innerhalb eines Listenfeldes kann sonst die GUI schnell dazu kommen, nicht WAHR und FALSCH daraus zu lesen, sondern einfach nach dem Text zu suchen.

Code: Alles auswählen

SELECT CASE WHEN "S" = TRUE THEN 'H' WHEN "S" = FALSE THEN 'F' ELSE '' END "Text", "S" FROM "PEOPLE"
löst als SQL-Code für das Listenfeld Dein Problem.

Für das Serienbriefanliegen fehlt mir jetzt die Geduld, das nach zu bauen.

Gruß

Robert
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Seltsames Verhalten bei boolean Feldern in Formularen und Feldbefehlen

Beitrag von F3K Total »

Guten Morgen,
noch zwei kleine Feinheiten:
  • Der SQL-Code sollte

    Code: Alles auswählen

    SELECT DISTINCT CASE WHEN "S" = TRUE THEN 'H' WHEN "S" = FALSE THEN 'F' ELSE '' END "Text", "S" FROM "PEOPLE"
    lauten, sonst enthält das Listenfeld Zeilen mehrfach.
  • Unter AOO muss man bei der angehängten Datei das gebundene Feld von 0 auf 1 ändern, damit es funktioniert.
BOOL_LST.PNG
BOOL_LST.PNG (1.88 KiB) 5814 mal betrachtet
Zu den logischen Operatoren:
([Mat_data.Firmenkontakte.S]==1) AND ([Mat_data.Firmenkontakte.xy]==0) funktioniert bei mir unter AOO 4.1.6
Gruß R
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Seltsames Verhalten bei boolean Feldern in Formularen und Feldbefehlen

Beitrag von RobertG »

Hallo R.,

anke für die Korrektur. Der Code hat bei uns natürlich den Nachteil, dass da erst einmal nichts steht, wenn in der Tabelle nichts erhalten ist. Für die ersten Datensätze kann deswegen 'H' und 'F' nicht ausgewählt werden. Das gelingt mit der Abfrage

Code: Alles auswählen

SELECT DISTINCT 'H' AS "Text", TRUE AS "Info" FROM "PEOPLE"
UNION
SELECT DISTINCT 'F' AS "Text", FALSE AS "Info" FROM "PEOPLE"
dann besser. Allerdings: Direkte SQL-Ausführung anklicken.

Gruß

Robert
saxo
**
Beiträge: 47
Registriert: Do, 01.04.2010 00:45

Re: Seltsames Verhalten bei boolean Feldern in Formularen und Feldbefehlen

Beitrag von saxo »

Vielen Dank für die Vorschläge, funktioniert leider nicht. Gleiches Problem, dass nur dann H oder F angezeigt wird, wenn das Feld angewählt ist. Ich vergass zu erwähnen, dass ich libreoffice 6 habe. Vielleicht mach ich auch noch was falsch, anbei mal mein Versuch.

Ein kleineres Problem noch, in bedingten Texten: geht es, dass ich Text verkette, z.B. "Herr " & [Feld.Name]? Mit & geht es leider nicht.
Dateianhänge
Test_Bool.odb
(18.18 KiB) 139-mal heruntergeladen
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Seltsames Verhalten bei boolean Feldern in Formularen und Feldbefehlen

Beitrag von RobertG »

Hallo Saxo,

zum einen hat der Code, den Du da drin stehen hast, gleich mehrere Fehler ( ein ", ein fehlendes Komma - und dann auch noch das DISTINCT, das R. ergänzt hat), zum anderen steht das gebundene Feld immer noch auf '0'. Das muss auf '1' gestellt werden.

Gruß

Robert
saxo
**
Beiträge: 47
Registriert: Do, 01.04.2010 00:45

Re: Seltsames Verhalten bei boolean Feldern in Formularen und Feldbefehlen

Beitrag von saxo »

Kann keinen Fehler entdecken, wird auch keine Fehlermeldung angezeigt:
SELECT DISTINCT 'H' AS "Text", TRUE AS "S" FROM "PEOPLE" UNION SELECT DISTINCT 'F' AS "Text", FALSE AS "S" FROM "PEOPLE"

Wenn ich das Feld anwähle, kann ich die Auswahlliste ja auch sehen, eine Änderung wird aber nicht dauerhaft gespeichert. Könnte bitte jemand mein Formular öffnen und bestätigen, dass das Problem nicht nur bei libreoffice auftritt?
Danke
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Seltsames Verhalten bei boolean Feldern in Formularen und Feldbefehlen

Beitrag von F3K Total »

Moin,
bist du ein TROLL oder nur beratungsresistent?
Wenn du unsere Hinweise befolgt hättest, hättest du auch ein funktionierendes Ergebnis bekommen, siehe Anlage.
Zur Verkettung:"Herr " & [Feld.Name]
Wie von Robert weiter oben schon angemerkt:
Robert hat geschrieben:... ich würde das so regeln, dass möglichst viel davon über die Datenbank erledigt wird
empfehle ich dir also auch, die Verkettung mit dem Befehl

Code: Alles auswählen

CONCAT(FELD1,FELD2)
oder mit zwei Pipe-Zeichen

Code: Alles auswählen

FELD1||FELD2 
innerhalb der DB zu machen.

R
Dateianhänge
Test_Bool.odb
(18.14 KiB) 138-mal heruntergeladen
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Seltsames Verhalten bei boolean Feldern in Formularen und Feldbefehlen

Beitrag von RobertG »

Bei mir erscheint das Listenfeld ganz normal gefüllt. Auch die Anzeige ist da - zumindest bei dem, was R. angehängt hat. Bei der Version steht auch das gebundene Feld auf "1".

Alles hier unter LibreOffice 6.1.5.2, OpenSUSE 15.
saxo
**
Beiträge: 47
Registriert: Do, 01.04.2010 00:45

Re: Seltsames Verhalten bei boolean Feldern in Formularen und Feldbefehlen

Beitrag von saxo »

Vielen Dank F3K Total, ich habe im normalen Leben nichts mit SQL zu tun und habe deshalb so meine Schwierigkeiten.
Antworten