AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi UniDAC Merkwürdigkeiten
Thema durchsuchen
Ansicht
Themen-Optionen

UniDAC Merkwürdigkeiten

Ein Thema von haentschman · begonnen am 16. Dez 2016 · letzter Beitrag vom 17. Dez 2016
Antwort Antwort
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

AW: UniDAC Merkwürdigkeiten

  Alt 16. Dez 2016, 12:01
Allerdings habe ich einen Fehler den ich nicht einordnen kann. Was früher ging, geht nicht mehr.
weil sie jetzt eine strengere Typ-Behandlung eingebaut haben??

Ist F_ISVALID denn auch wirklich ein Integer?
(ich hab schon Felder gesehen die sollten numerisch sei, es hatte dann aber nur für Alpha gereicht!)
Neben dem DB-Typ wäre ja auch noch interessant ob Du im zugehörigen Select noch irgendwelche TypeCasts durchgeführt hast?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.484 Beiträge
 
Delphi 12 Athens
 
#2

AW: UniDAC Merkwürdigkeiten

  Alt 16. Dez 2016, 12:08
Hallöle...

Danke für deine Anteilnahme.

1. Es ist ein Integer Feld. Früher mit IBDAC war das kein Problem darauf via AsInteger zuzugreifen.
2. Meine Datenbankfelder kenne ich persönlich mit Namen... Da ist keine Verwechslung möglich.
Angehängte Grafiken
Dateityp: png Integer.png (6,2 KB, 19x aufgerufen)
Dateityp: jpg SQL.jpg (146,8 KB, 25x aufgerufen)

Geändert von haentschman (16. Dez 2016 um 12:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.880 Beiträge
 
Delphi 13 Florence
 
#3

AW: UniDAC Merkwürdigkeiten

  Alt 16. Dez 2016, 12:29
Schau mal hier - sieht ähnlich aus: Unable to access field 'Active' as type Integer
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: UniDAC Merkwürdigkeiten

  Alt 16. Dez 2016, 13:18
Hallöle...

Danke für deine Anteilnahme.

1. Es ist ein Integer Feld. Früher mit IBDAC war das kein Problem darauf via AsInteger zuzugreifen.
2. Meine Datenbankfelder kenne ich persönlich mit Namen... Da ist keine Verwechslung möglich.
Rechts neben dem Integer steht noch was: Boolean Normal. Ist das "nur" ein Kommentar oder hat das irgendwelche Bedeutung für den Datentyp?

Mich würde da nun nicht wundern, wenn datanbankseitig ein boolsches Feld wie ein Integer behandelt wird, aber nach außen durchaus als boolscher Wert "verkauft" wird. Wäre meiner Meinung nach aus durchaus sinnvoll.

Habe mich immer wieder über solche Konstrukte amüsiert:
Delphi-Quellcode:
if DataSet.FieldByName('Aktiv').AsBoolean = true then ...
if DataSet.FieldByName('Aktiv').AsBoolean = false then ...
if DataSet.FieldByName('Aktiv').AsString = 'then ...
Die dritte Variante ist der berühmtberüchtigte Dritte von zwei möglichen Werten
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.484 Beiträge
 
Delphi 12 Athens
 
#5

AW: UniDAC Merkwürdigkeiten

  Alt 16. Dez 2016, 14:03
Hallo...
Zitat:
Boolean Normal
...das ist nur der Name der Domäne (Integer als Inhalt)

Inzwischen habe ich herausgefunden, das das Integer Feld nach Boolean gemappt wird bei Verwendung als Boolean Wert.
MasterDevice.IsValid := Qry.FieldByName('F_ISVALID').AsBoolean; ...ich würde sagen das eine Eigenart ist die aus den multiplen DBMS entsteht. 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.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.880 Beiträge
 
Delphi 13 Florence
 
#6

AW: UniDAC Merkwürdigkeiten

  Alt 16. Dez 2016, 14:10
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.
Some problems simply don't have simple solution
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.484 Beiträge
 
Delphi 12 Athens
 
#7

AW: UniDAC Merkwürdigkeiten

  Alt 16. Dez 2016, 14:26

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

Danke an alle.
  Mit Zitat antworten Zitat
Slipstream
(Gast)

n/a Beiträge
 
#8

AW: UniDAC Merkwürdigkeiten

  Alt 17. Dez 2016, 05:54
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz