Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi UniDAC Merkwürdigkeiten (https://www.delphipraxis.net/191177-unidac-merkwuerdigkeiten.html)

haentschman 16. Dez 2016 14:03

AW: UniDAC Merkwürdigkeiten
 
Hallo...
Zitat:

Boolean Normal
...das ist nur der Name der Domäne (Integer als Inhalt) :wink:

Inzwischen habe ich herausgefunden, das das Integer Feld nach Boolean gemappt wird bei Verwendung als Boolean Wert.
Delphi-Quellcode:
MasterDevice.IsValid := Qry.FieldByName('F_ISVALID').AsBoolean;
...ich würde sagen das eine Eigenart ist die aus den multiplen DBMS entsteht. :wink: Das müssen wir noch üben...

@Uwe:
Das Mapping der Integer Felder als Boolean bringt es nicht. Das gilt dann für alle Felder. Das Mapping für die einzelnen Felder ist mit Arbeit verbunden... da kann ich gleich VALUE nehmen. :P

Uwe Raabe 16. Dez 2016 14:10

AW: UniDAC Merkwürdigkeiten
 
Zitat:

Zitat von haentschman (Beitrag 1356379)
Das Mapping der Integer Felder als Boolean bringt es nicht. Das gilt dann für alle Felder. Das Mapping für die einzelnen Felder ist mit Arbeit verbunden... da kann ich gleich VALUE nehmen. :P

Some problems simply don't have simple solution :twisted:

haentschman 16. Dez 2016 14:26

AW: UniDAC Merkwürdigkeiten
 
:P
Im Prinzip muß ich ruhig sein...Die Umstellung von IBDAC auf UniDac war eine Action von einer Stunde. :thumb: Hier hat mir sehr geholfen, das die SQL nicht über die Anwendung verteilt hatte sondern alles in einem Interface gekapselt ist.

Danke an alle. :P

Slipstream 17. Dez 2016 05:54

AW: UniDAC Merkwürdigkeiten
 
Hat das nicht vielleicht damit zu tun, dass Unidac eine integerbasierte Domain als Boolean-Feld erwartet, deren Bezeichner die Zeichenfolge "BOOLEAN" beinhalten muß?

Used to create TBooleanField for fields that have domain of the integer data type, and the domain name contains 'BOOLEAN'.

Firedac erwartet dagegen ein smallint-basiertes Feld, in dessen Namen die Zeichenfolge "BOOL" vorkommt:

FireDac: A boolean field may be created using a domain. The domain name must contain 'BOOL' substring. Also, add ExtendedMetadata=True parameter to your connection definition.
CREATE DOMAIN T_BOOLEAN SMALLINT;
CREATE TABLE ... (
...
BOOLEAN_FIELD T_BOOLEAN,
...);

Die Lösung, AsValue statt AsBoolean zu verwenden, wäre für mich nicht durchgängig praktikabel, weil ich auch datensensitive Steuerelemente wie DBCheckboxen und DBGrids verwende.

haentschman 17. Dez 2016 06:03

AW: UniDAC Merkwürdigkeiten
 
Hallöle...:P
Das ist mal ein Ding...8-) Das der Name der Domain die "Logik" beeinfusst. :gruebel: Ich werde das mal im Hinterkopf behalten.

Danke...8-)

Nachtrag:
Wenn ich die Domain von BOOLEAN NORMAL in BO_NORMAL ändere, wird das Feld wie gewohnt als Integer angesprochen... Dinge gibt es...:gruebel:

Danke nochmal.

Slipstream 17. Dez 2016 11:02

AW: UniDAC Merkwürdigkeiten
 
Zitat:

Zitat von haentschman (Beitrag 1356419)
Hallöle...:P
Das ist mal ein Ding...8-) Das der Name der Domain die "Logik" beeinfusst. :gruebel: Ich werde das mal im Hinterkopf behalten.

Danke...8-)

Nachtrag:
Wenn ich die Domain von BOOLEAN NORMAL in BO_NORMAL ändere, wird das Feld wie gewohnt als Integer angesprochen... Dinge gibt es...:gruebel:

Danke nochmal.

Gerne. Ich mußte schließlich schon einmal eine Datenbank und ein DB-Projekt abändern, um mit unterschiedlichen DB-Komponenten darauf zugreifen zu können, weil wir verschiedene Homeoffice-Entwickler haben, die mit verschiedenen Versionen am Projekt arbeiten, einer sogar noch mit D2009. Bis ich nach der Einführung von Firedac herausgefunden hatte, woran es lag, vergingen Tage. Deshalb hab ich mir das in meiner Code-Datenbank notiert und finde es bei Bedarf auch immer gleich wieder.

Bei dir liegt dann das Problem genau andersherum, nämlich dass ein Boolean-Typ nicht als Integer angesprochen werden kann.

Ach ja: Typbezeichner mit Leerzeichen sind auch in Firebird keine gute Idee.

Und nochwas: Wenn man mit Firedac auf eine Firebird-Datenbank zugreift und diese selbsterstellten Boolean-Domains verwenden will, muß man in der Connection-Komponente unbedingt die Eigenschaft ExtendedMetadata=True setzen, sonst funktioniert das nicht und die Fehlermeldung lautet auch hier, dass auf diesen Typen nicht als Boolean zugegriffen werden kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:10 Uhr.
Seite 2 von 2     12   

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