Einzelnen Beitrag anzeigen

Benutzerbild von DelphiBandit
DelphiBandit

Registriert seit: 19. Feb 2007
Ort: bei Walsrode
165 Beiträge
 
Delphi 10.4 Sydney
 
#1

Set of Enumeration Type in Datenbank-Parameter zuweisen

  Alt 10. Jun 2014, 13:14
Delphi-Version: XE5
Hallo zusammen,

ich habe eine vermutlich ganz triviale Frage. Der Laufzeitfehler bezüglich Typkonvertierung beschäftigt mich allerdings schon eine Weile, ohne dass ich bisher eine Lösung gefunden hätte.

Delphi-Quellcode:
type
  TBankFlag = (fbfEinzahlung, fbfAuszahlung);
type
  TBankFlags = set of TBankFlag;

// Diese in im Objekt als Property vorhanden
type
  TFoo = type(TObject)
    FFlags: TBankFlags;
  published
    Flags: TBankFlags read FFlags write FFlags;
  end;
Den Wert bestimme ich per RTTI und bekomme einen Wert vom Typ TValue zurück. Jetzt möchte ich diesen in der Datenbank als Integer speichern. Dabei kommt aber immer ein Laufzeitfehler "Ungültige Typumwandlung", obwohl ich in value.AsInteger den korrekten Wert im Debugger sehen kann. Das Feld Flags ist in der Datenbank als Integer angelegt.

foo.Flags := [fbfEinzahlung, fbfAuszahlung] -> value.AsInteger = 3
foo.Flags := [fbfEinzahlung] -> value.AsInteger = 1

Delphi-Quellcode:
..
var value: TValue;
begin
  // ...value-Bestimmung...
  
  qry.ParamByName('FLAGS').AsInteger := value.AsInteger;
end;
Egal welchen Typ ich mir von TValue mit .AsXXX geben lasse, es knallt beim Zuweisen dieses Parameters. Noch eine Anmerkung, Flags kann je nach Objekt verschiedene ENum-Bedeutungen haben. Also ist AsType<T> für mich nicht so zielführend.

Geht das überhaupt, was ich da vorhabe?
Carsten

Geändert von DelphiBandit (10. Jun 2014 um 13:22 Uhr)
  Mit Zitat antworten Zitat