AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi UniDAC Merkwürdigkeiten

UniDAC Merkwürdigkeiten

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

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.390 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

UniDAC Merkwürdigkeiten

  Alt 16. Dez 2016, 10:45
Datenbank: Firebird • Version: 2.5 • Zugriff über: UniDAC
Hallo...

Ich habe mein Project auf Berlin incl. UniDAC gehoben.

Allerdings habe ich einen Fehler den ich nicht einordnen kann. Was früher ging, geht nicht mehr.
Code:
MasterDevice.Active := Boolean(Qry.FieldByName('F_ACTIVE').Value); // <- das geht (Test)
MasterDevice.IsValid := Boolean(Qry.FieldByName('F_ISVALID').AsInteger); // <- resultiert im Fehler
MasterDevice.ConfigurationName := Qry.FieldByName('F_CONFIGURATION_NAME').AsString;
Zitat:
Im Projekt dVAServer.exe ist eine Exception der Klasse EDatabaseError mit der Meldung 'Feld 'F_ISVALID' kann nicht als Typ Integer angesprochen werden' aufgetreten.
Die Datenbank Felder sind definiert als INTEGER. Ich würde gern den Datentyp (AsInteger) behalten statt VALUE.

Danke...
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#2

AW: UniDAC Merkwürdigkeiten

  Alt 16. Dez 2016, 10:50
Müsste doch so gehen oder ?

// <> 1 = False

Code:
MasterDevice.IsValid := Qry.FieldByName('F_ISVALID').AsInteger = 1;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
26.984 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: UniDAC Merkwürdigkeiten

  Alt 16. Dez 2016, 10:56
Ich würde eher gegen 0 prüfen.
MasterDevice.IsValid := Qry.FieldByName('F_ISVALID').AsInteger <> 0;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.390 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

AW: UniDAC Merkwürdigkeiten

  Alt 16. Dez 2016, 11:09
Moin...

Habt ihr die Fehlermeldung gelesen? Unabhängig von der späteren Auswertung...
Zitat:
Feld 'F_ISVALID' kann nicht als Typ Integer angesprochen werden'
...ich will auf ein Integer Feld als AsInteger zugreifen aber er läßt mich nicht.

Nachtrag: Ist das Boolean der Urheber?

Trotzdem danke...

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

Registriert seit: 20. Jan 2006
Ort: Lübbecke
7.617 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: UniDAC Merkwürdigkeiten

  Alt 16. Dez 2016, 11:11
Kannst du mal prüfen, was bei F_ISVALID für ein Feldtyp von UniDAC generiert wird? Wenn es ein TBooleanField ist, würde das dieses Verhalten erklären.
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
4.390 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

AW: UniDAC Merkwürdigkeiten

  Alt 16. Dez 2016, 11:14
Mach ich...

Kann aber eine Weile dauern...
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.651 Beiträge
 
Delphi 7 Personal
 
#7

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
4.390 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

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.
Miniaturansicht angehängter Grafiken
integer.png   sql.jpg  

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

Registriert seit: 20. Jan 2006
Ort: Lübbecke
7.617 Beiträge
 
Delphi 10.3 Rio
 
#9

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
 
#10

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
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 22:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf