Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Default Boolean Wert in IBDAC (https://www.delphipraxis.net/171993-default-boolean-wert-ibdac.html)

Morphie 6. Dez 2012 07:55

Datenbank: Firebird • Version: 2.5 • Zugriff über: IBDAC

Default Boolean Wert in IBDAC
 
Moin,

ich habe in Firebird folgende Domain angelegt:
Code:
CREATE DOMAIN BOOLEAN AS
  SMALLINT
  DEFAULT 0
  NOT NULL
  CHECK (value in (0, 1));
Es ist also ein Defaultwert von 0 eingestellt.

Unter IBDAC habe ich in der Connection folgendes bei Data Type Mapping eingestellt:
Code:
Database Type: SmallInt
Field Type: Boolean
somit werden mir alle SmallInts als Booleans dargestellt.
Ich könnte ggf. auch die Option "BooleanDomainFields" in den ganzen Queries setzen, aber ich denke das macht für mich keinen Unterschied und hätte den Nachteil, dass ich es nicht mehr zentral für alle TIBCQueries verwalten kann.

Wenn ich jetzt einen neuen Datensatz via Insert zur Datenmenge hinzufügen möchte, haben die Booleanfelder einen undefinierten Zustand (Null)
Was muss ich wo einstellen, dass Booleanfelder standardmäßig auf false stehen?

Der Jan 6. Dez 2012 11:10

AW: Default Boolean Wert in IBDAC
 
Zitat:

Zitat von Morphie (Beitrag 1194504)
Wenn ich jetzt einen neuen Datensatz via Insert zur Datenmenge hinzufügen möchte, haben die Booleanfelder einen undefinierten Zustand (Null)
Was muss ich wo einstellen, dass Booleanfelder standardmäßig auf false stehen?

Die Booleanfelder in deiner IBDAC-Datenmenge? Die Defaultwerte greifen erst dann, wenn der Eintrag auch tatsächlich in die Datenbank geschrieben & committet wird. Das funktioniert eigentlich immer, vorausgesetzt, 1. die Domain ist richtig definiert (scheint lt. deinen Angaben so), 2. das entsprechende Feld in der Table hat auch die Domain BOOLEAN

Morphie 6. Dez 2012 11:18

AW: Default Boolean Wert in IBDAC
 
Ja, ist beides der Fall.
Hänge ich mein Query dann z.B. an ein Grid, werden mir die Felder auch als Checkboxes dargestellt.
Speichere ich aber einen neuen Datensatz, ohne die Felder explizit auf true oder auf false zu setzen, bekomme ich die Meldung:
Code:
Feld 'BOOLEAN_FELDNAME' muss einen Wert haben.
Es liegt anscheinend daran, dass die Required-Eigenschaft des Feldes auf true steht, bzw. der Wert des Feldes null ist.

So wie ich das sehe, gibt es zwei Möglichkeiten:
1. Die Required-Eigenschaft auf false setzen. Bzw. NOT NULL aus der Domain entfernen
2. Den Wert der Felder standardmäßig (per Code) auf False setzen.

Beides unschön wie ich finde...

dataspider 6. Dez 2012 13:45

AW: Default Boolean Wert in IBDAC
 
In der TIBCQuery unter Options DefaultValues auf True setzen, dann sollte es IMHO funktionieren.

Frank

Morphie 6. Dez 2012 13:47

AW: Default Boolean Wert in IBDAC
 
Ha! Jau, das wars!

Vielen Dank :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz