Seite 1 von 2
Ja/Nein (Boolean) in Formularen?
Verfasst: Di 14. Nov 2017, 11:03
von hylli
Hi,
in einer Tabelle habe ich 2 Felder mit Feldtyp "Ja/Nein [Boolean]" definiert.
Diese würde ich gerne im Formular so umsetzen, dass der Nutzer der Datenbank "Ja" bzw. "Nein" per Listenfeld auswählen kann oder als Optionsfelder "Ja" bzw. "Nein".
Wie setze ich das am einfachsten um? Komme da gerade auf keinen grünen Zweig?!?
Hylli
Re: Ja/Nein (Boolean) in Formularen?
Verfasst: Di 14. Nov 2017, 11:50
von nikki
Hallo Hylli,
ich würde entweder ein Markierfeld verwenden und per Hilfetext auf die möglichen Funktionen hinweisen:

- 2017-11-14 11_46_04-FormularTest.odt - Markierfeld.gif (2.69 KiB) 6467 mal betrachtet
oder zwei Optionsfelder verwenden und diese per Gruppierungsrahmen gruppieren so, dass nur eine Option ausgewählt werden kann:

- 2017-11-14 11_49_24-FormularTest.odt - Optionsfelder.gif (3.88 KiB) 6467 mal betrachtet
Re: Ja/Nein (Boolean) in Formularen?
Verfasst: Di 14. Nov 2017, 12:29
von hylli
Ich habe es jetzt mal als Markierfeld gemacht, weil Kollegin das gerne so einfach wie möglich haben möchte.
Wenn ich jedoch das Formular speichere, so wird der Haken wieder automatisch entfernt?
Im Reiter "Daten" habe ich das jeweilige Tabellenfeld gewählt und dort zusätzlich definiert:
Referenzwert (ein): 1
Referenzwert (aus): 0
Wo liegt mein Fehler?
Hylli
Re: Ja/Nein (Boolean) in Formularen?
Verfasst: Di 14. Nov 2017, 15:27
von nikki
Hallo Hylli,
Rückgabewerte von Feldtypen Boolean sind datenbankabhängig. Probier mal statt 1 = True und statt 0 = False.
Re: Ja/Nein (Boolean) in Formularen?
Verfasst: Di 14. Nov 2017, 15:45
von hylli
Hi,
ich habe die Werte einfach mal weggelassen, und dann bleiben die Zustände gespeichert.
Wenn ich eine Abfrage mit u.a. diesen Feldern mache und diese nach Calc "ziehe", dann erscheint bei gesetztem Haken "WAHR" bzw. bei nicht gesetztem Haken entsprechend "FALSCH".
Für meine Abfragen/Auswertungen wäre es mir dann aber lieber, wenn da "Ja" oder "Nein" stehen würde.
Wie bewerkstellige ich das?
Hylli
Re: Ja/Nein (Boolean) in Formularen?
Verfasst: Di 14. Nov 2017, 16:22
von RobertG
Hallo Hylli,
in den Abfragen musst Du dann den Wert TRUE eben 'Ja', den Wert FALSE 'Nein' zuordnen:
Code: Alles auswählen
SELECT ..., CASE WHEN "Boolean" = TRUE THEN 'Ja' ELSE 'Nein' END AS "Ja/Nein" FROM "Tabelle"
Kannst natürlich auch noch NULL abfangen, wenn Du ein leeres Feld ebenfalls zulässt.
Gruß
Robert
Re: Ja/Nein (Boolean) in Formularen?
Verfasst: Di 14. Nov 2017, 19:23
von hylli
Puh, fragt sich wo/wie das Konstrukt in dieser Abfrage platziert werden müsste?!?
SELECT "Veranstalter"."Veranstalter", "Art der Schulung"."Art der Schulung", "Schulungen"."Veranstaltungsort", "Schulungen"."Bezeichnung", "Schulungen"."Datum von", "Schulungen"."Datum bis", "Mitarbeiter"."Nachname", "Mitarbeiter"."Vorname", "Schulungen"."Dauer in Tagen", "Schulungen"."Dauer in Stunden", "Schulungen"."Preis", "Schulungen"."Geplant", "Schulungen"."Mahlzeitengestellung", "Schulungen"."Kfz gebucht", "Schulungen"."Teilnahmebescheinigung", "Schulungen"."Bemerkungsfeld" FROM "rel_Schulung_Mitarbeiter", "Schulungen", "Mitarbeiter", "Art der Schulung", "Veranstalter" WHERE "rel_Schulung_Mitarbeiter"."FK_ID_Schulung" = "Schulungen"."ID_Schulung" AND "rel_Schulung_Mitarbeiter"."FK_ID_Mitarbeiter" = "Mitarbeiter"."Personal-Nr." AND "Schulungen"."FK_ID_Art" = "Art der Schulung"."ID_Art" AND "Schulungen"."FK_ID_Veranstalter" = "Veranstalter"."ID_Veranstalter"
Die beiden Boolean-Felder befinden sich in der Tabelle "Schulungen".
Hylli
Re: Ja/Nein (Boolean) in Formularen?
Verfasst: Mi 15. Nov 2017, 18:42
von RobertG
Hallo Hylli,
Code: Alles auswählen
SELECT "Veranstalter"."Veranstalter", "Art der Schulung"."Art der Schulung",
"Schulungen"."Veranstaltungsort", "Schulungen"."Bezeichnung",
"Schulungen"."Datum von", "Schulungen"."Datum bis",
"Mitarbeiter"."Nachname", "Mitarbeiter"."Vorname",
"Schulungen"."Dauer in Tagen", "Schulungen"."Dauer in Stunden",
"Schulungen"."Preis", "Schulungen"."Geplant",
"Schulungen"."Mahlzeitengestellung", "Schulungen"."Kfz gebucht",
"Schulungen"."Teilnahmebescheinigung", "Schulungen"."Bemerkungsfeld",
CASE WHEN "Schulungen"."Teilnahmebescheinigung" = TRUE THEN 'Ja' ELSE 'Nein' END AS "Bescheinigung"
FROM "rel_Schulung_Mitarbeiter", "Schulungen", "Mitarbeiter", "Art der Schulung", "Veranstalter"
WHERE "rel_Schulung_Mitarbeiter"."FK_ID_Schulung" = "Schulungen"."ID_Schulung"
AND "rel_Schulung_Mitarbeiter"."FK_ID_Mitarbeiter" = "Mitarbeiter"."Personal-Nr."
AND "Schulungen"."FK_ID_Art" = "Art der Schulung"."ID_Art"
AND "Schulungen"."FK_ID_Veranstalter" = "Veranstalter"."ID_Veranstalter"
leider schreibst Du nicht, welches Feld denn das Boolean-Feld ist. Ich habe jetzt einfach einmal angenommen, dass es sich um "Schulungen"."Teilnahmebescheinigung" handelt. Das kannst Du ja dann austauschen.
Gruß
Robert
Re: Ja/Nein (Boolean) in Formularen?
Verfasst: Mi 15. Nov 2017, 19:18
von hylli
Hi,
es sind sogar zwei Felder davon betroffen, genauer:
"Schulungen"."Mahlzeitengestellung", "Schulungen"."Kfz gebucht"
Mit Deiner Hilfe habe ich es jetzt mal so hinbekommen:
Code: Alles auswählen
SELECT "Veranstalter"."Veranstalter", "Art der Schulung"."Art der Schulung", "Schulungen"."Veranstaltungsort",
"Schulungen"."Bezeichnung", "Schulungen"."Datum von", "Schulungen"."Datum bis", "Mitarbeiter"."Nachname",
"Mitarbeiter"."Vorname", "Schulungen"."Dauer in Tagen", "Schulungen"."Dauer in Stunden", "Schulungen"."Preis",
"Schulungen"."Geplant", "Schulungen"."Mahlzeitengestellung", "Schulungen"."Kfz gebucht",
"Schulungen"."Teilnahmebescheinigung", "Schulungen"."Bemerkungsfeld", CASE WHEN
"Schulungen"."Mahlzeitengestellung" = TRUE THEN 'Ja' ELSE 'Nein' END AS "Mahlzeit", CASE WHEN
"Schulungen"."Kfz gebucht" = TRUE THEN 'Ja' ELSE 'Nein' END AS "Kfz" FROM "rel_Schulung_Mitarbeiter",
"Schulungen", "Mitarbeiter", "Art der Schulung", "Veranstalter" WHERE "rel_Schulung_Mitarbeiter"."FK_ID_Schulung" =
"Schulungen"."ID_Schulung" AND "rel_Schulung_Mitarbeiter"."FK_ID_Mitarbeiter" = "Mitarbeiter"."Personal-Nr." AND
"Schulungen"."FK_ID_Art" = "Art der Schulung"."ID_Art" AND "Schulungen"."FK_ID_Veranstalter" =
"Veranstalter"."ID_Veranstalter"
Vermutlich gibt es aber eine einfacherer Schreibweise?!?
Einer meiner Fehler lag u.a. im fehlenden Komma vor der CASE-Anweisung, zuvor hatte ich die CASE-Anweisung auch falsch positioniert, ...
Mit der Teilnahmebescheinigung habe ich allerdings auch noch eine offene Frage, dazu aber separater Thread.
Bis dahin mal wieder: Danke für Deine Hilfe und Geduld.
Hylli
Re: Ja/Nein (Boolean) in Formularen?
Verfasst: Mi 15. Nov 2017, 21:40
von RobertG
Hallo Hylli,
Du kannst die Schreibweise auch vereinfachen. Dann musst Du aber zwingend bei der internen HSQLDB bleiben und kannst das z.B. nicht in Firebird - der anderen internen Datenbank, nutzen. Statt
Code: Alles auswählen
..., CASE WHEN "Schulungen"."Mahlzeitengestellung" = TRUE THEN 'Ja' ELSE 'Nein' END AS "Mahlzeit"...
geht auch
Code: Alles auswählen
..., CASEWHEN ("Schulungen"."Mahlzeitengestellung" = TRUE, 'Ja' ,'Nein' ) AS "Mahlzeit"...
Bei dieser Variante ist aber nach der 2. Möglichkeit Schluss. Die erste Variante ermöglicht es, noch weitere Bedingungen abzufragen, z.B. bei FALSE das 'Nein' und sonst NULL, also ein leeres Feld.
Gruß
Robert