Zeitangabe konvertieren
-
Hallo zusammen,
ich will mit einer lokalen BCB 5-Anwendung eine auf dem Server abgelegte MS-Access DB mit Daten füttern, u. a. auch mit einer Zeitangabe (Probennahmezeit). In der Access-Tabelle ist das Feld als "Datum/Zeit" - Wert deklariert. Gebe ich jetzt in mein Edit-Feld z.B. "14:00" ein, so erscheint "30.12.1899 14:00:00".
Wer weiß Rat, wie ich dies vermeiden kann? ( Die Kombination BCB 5 + MS-Access ist leider fest vorgegeben ).
Danke für eure Hilfe,
f8frankie
-
Stell mal zum einen in der Access-DB das Format des Feldes auf "Zeit, 24Std".
Um dann ein entsprechendes Datum einzugeben habe ich folgenden SQL-Befehl:
INSERT INTO Tabelle (zeit) VALUES (CDate("14:00"))
-
Hab das gerade mal versucht.
Also in der Access-DB wird der Eintrag "14:00" in dem Feld vorgenommen.
Wenn ich aber die Tabelle mit dem BCB über ADO in einem DBGrid anzeigen lasse,
dann erscheint folgender Eintrag "31.12.1899 14:00:00"
-
also DateTimefelder sind in wahrheit float werte in denen das datum in der form
datumsanteil,zeitanteil gespeichert wird. wenn man nun nur eine Uhrzeit eingibt, steht in dem feld in wahrheit 0,4711....
die 0 entspricht dem 31.12.1899 00:00:00
alles andere ist formatierungssache
-
Mit folgendem Codeschnippsel kann ich die Uhrzeit in einem Edit ausgeben:
ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add("SELECT * FROM Tabelle1"); ADOQuery1->Open(); ADOQuery1->First(); Edit1->Text = TimeToStr(ADOQuery1->FieldByName("zeit")->AsDateTime);
Damit als Grundlage könnte man ja die Daten der Tabelle auch in einem StringGrid z.B. darstellen.
-
das und noch vielmehr findet sich in "DateUtils.hpp"