Ich arbeite in Delphi mit den ADO Komponenten und einer MS
Access Datenbank. In einer Tabelle verwende ich den Access
Datums-Typ und lese ihn aus. Wie kann ich ermitteln, ob neben
dem Datum eine Zeit angegegen ist und wie kann ich den
Zeit-Teil aus dem Datum entfernen?
OK Frage verstanden
Hintergrund: Access implemetiert einen Datumstyp, der Datum
und Uhrzeit implementiert. Gibt man nur das Datum an, so steht
in der Tabelle ausschließlich der Datumswert. Wie ermittle
ich, ob eine Uhrzeit angegeben ist und wie entferne ich diese
wieder?
Ich nehme einfach an, dass dir das ganze Ding als String übergeben wird. Den musst du, wie schonmal erwähnt, analysieren. Es gibt kein Universalrezept, den String zu anaylsieren. Aber es könnte zum Beispiel sein, dass das Datum IMMER im Format DD.MM.YYYY geschrieben ist, also 10 Zeichen lang ist. Und da kannste einfach die Länge (Funct. length)abfragen, wenn länger als 10 dann is wahrscheinlich Datum mit Zeit, sonst nur Datum. Und wenn das Format für Datum mit Zeit meinetwegen folgendermaßen aussieht: DD.MM.YYYY HH:MM:SS dann tuste den String einfach kürzen auf die ersten 10 Zeichen und die Zeitangabe fällt automatisch raus. Der Code für mein Beispiel sähe dann ungefähr so aus:
var Zeitangabe:String; {die aus access}
Nur\_Datum: String;
begin
if length(Zeitangabe)\>10 then
begin
Nur\_Datum:='';
for i:=0 to 9 do
begin
Nur\_Datum:=Nur\_Datum+Zeitangabe[i]
end;
end else
begin
if length(Zeitangabe)=10 then Nur\_Datum:=Zeitangabe else
begin
messagedlg('Fehler, Zeitangabe zu kurz!',mterror,[mbcancel],1);
{Wenn das kommt, haben wir was falsch gemacht bei der Analyse!
Beziehungsweise was nicht beachtet, da der String kürzer
als 10 ist}
end;
end;
end;
Möglicherweise OT: kann ich Uhrzeiten direkt in der Tabelle
verbieten?
Das weiß ich nicht, ich bin kein Access-Liebhaber
Gruß Markus