Entwickler-Ecke

Datenbanken - Zeos + Firebird: Daten werden nicht richtig gespeichert?


jjturbo - Fr 15.07.11 12:21
Titel: Zeos + Firebird: Daten werden nicht richtig gespeichert?
Moin Forum,

ich habe eine Firebirddatenbank, in der ich mit Zeos in einer Tabelle in einem Feld vom Typ Float einen TDateTime-Wert schreibe:


Delphi-Quelltext
1:
2:
3:
4:
5:
  ZTable1.Append;
  ZTable1.FieldByName('Date').AsDateTime     := Date;
  ZTable1.FieldByName('Time').AsDateTime     := Time;
  ZTable1.FieldByName('ExactTime').AsFloat   := Now;
  ZTable1.Post;


Ich rufe meine Funktion zum Testen im 10-Sekunden-Takt auf. In dem Feld "Time" steht immer die aktuelle Uhrzeit, im Feld "ExactTime" steht immer exakt der gleiche Wert. Wenn ich mir das ganze im Debugger ansehe und die Maus über "ZTable1.FieldByName('ExactTime').AsFloat" halte, dann werden mir auch ganz klar unterschiedliche Werte angezeigt. Auch nach dem Post.

Ich hoffe Ihr könnt mir weiterhelfen?

Danke im voraus, Oliver


Nersgatt - Fr 15.07.11 14:07

Ehrlichgesagt, ich verstehe ncihtmal wo Dein Problem liegt. Und ich hab Deinen Post mehrfach gelesen. Könnte aber auch daran liegen, dass schon Freitag ist. :lol:


jjturbo - Fr 15.07.11 14:33

Beispiel:
Es werden nacheinander vier Datensätze mit folgenden Werten in ExactTime gespeichert:
40739.6112906829
40739.6114064236
40739.6115221643
40739.6116379051

Aber in allen Datensätzen steht anschliessend in ExactTime der gleiche Wert!
Das passiert aber nur, wenn ich das Feld als Float deklariere. Ich habe es jetzt mal als VARCHAR deklariert, dann geht es.


Nersgatt - Fr 15.07.11 15:16

Deklarier das Feld mal als Numeric(15,15). Passiert dann das selbe?


haentschman - Sa 16.07.11 08:01

Zitat:
Das passiert aber nur, wenn ich das Feld als Float deklariere. Ich habe es jetzt mal als VARCHAR deklariert, dann geht es.

... Warum benutzt du nicht die dafür vorgesehenen Feldtypen Date und Time ? :gruebel: