Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zeit + Datenbank + grosses Durcheinander (https://www.delphipraxis.net/86166-zeit-datenbank-grosses-durcheinander.html)

hirnstroem 10. Feb 2007 10:36

Datenbank: Access • Zugriff über: ADO

Zeit + Datenbank + grosses Durcheinander
 
'loha Folks,

in einer Access Datenbank ist die Zeit eines bestimmten Ereignisses abgespeichert. Ich möchte nun verhindern, dass das nächste Ereignis frühestens nach 15 Sekunden eingetragen werden kann (alle Ereignisse dazwischen werden verworfen).

Nun schaffe ich es nicht zu überprüfen ob die 15 Sekunden bereits vorbei sind oder nicht.

Den folgenden Code führe ich aus, sobald ich überprüfen möchte ob 15 Sekunden vergangen sind:

Delphi-Quellcode:
  StringTime := FieldByName('Time').Value; // StringTime schaut dann so aus '10.02.2007 11:08:31' und ist auch wirklich ein String
Mit der StrToDateTime Routine sollte es ja jetzt möglich sein, den String in ein Datum mit Zeit zu "convertieren" und mit Trunc sollte sich doch dann auch die Zeit extrahieren lassen, also etwas in dieser Art:

Delphi-Quellcode:
  EntryTime := Trunc(StrToDateTime(StringTime));
EntryTime ist aber stets 0 und ich weiss nicht wie weiter. Hilfe?!?

chericks 10. Feb 2007 11:06

Re: Zeit + Datenbank + grosses Durcheinander
 
Sitze gerade im Internetcafe und habe somit kein Delphi zur Hand, aber versuch es mal mit:

var
EntryTime:tdatetime;
begin
EntryTime:= FieldByName('Time').asdatetime;

if EntryTime+((1/24/60/60)*15)>=now then
begin
//neuer Datensatz darf angelegt werden
end;
end;

ManuelR 10. Feb 2007 11:09

Re: Zeit + Datenbank + grosses Durcheinander
 
Hallo,

so müsste es gehen (ungetestet)

if (now - FieldByName('Time').asdatetime) > (15/(60*60*24)) then
15 sekunden vorbei

hirnstroem 10. Feb 2007 11:30

Re: Zeit + Datenbank + grosses Durcheinander
 
Irgendwie scheitert die Sache schon bei...

Delphi-Quellcode:
  EntryTime:= FieldByName('Time').AsDateTime
EntryTime ist immer 0. Aber wie gesagt...

Delphi-Quellcode:
  StringTime := FieldByName('Time').Value; // StringTime schaut dann so aus '10.02.2007 11:08:31' und ist auch wirklich ein String
^^ das funktioniert dann aber wieder.

mkinzler 10. Feb 2007 11:38

Re: Zeit + Datenbank + grosses Durcheinander
 
Welchen Typ hat Time in der Datenbank?

hirnstroem 10. Feb 2007 11:47

Re: Zeit + Datenbank + grosses Durcheinander
 
Time ist in der Datenbank als Datum/Uhrzeit deklariert.
Format: Zeit, lang (00:00:00;0;_)

Soll ich die Zeit als Text in der Datenbank abspeichern?

mkinzler 10. Feb 2007 11:49

Re: Zeit + Datenbank + grosses Durcheinander
 
Nein, es sieht aber aus, als sei es als Text gespeichert.

hirnstroem 10. Feb 2007 12:10

Re: Zeit + Datenbank + grosses Durcheinander
 
Also, weder in der Felddefinition (ADO) noch in der Access-Datenbank wird die Zeit als Text verwertet.

Datum/Uhrzeit <- etwas anderes gibt es in Access nicht
ftDateTime <- ist die Definition des Feldes ADO-Seitig

mkinzler 10. Feb 2007 12:16

Re: Zeit + Datenbank + grosses Durcheinander
 
Dann versuch mal den Wert des Feldes direkt einer Time-Variablen zuzuweisen

hirnstroem 10. Feb 2007 12:29

Re: Zeit + Datenbank + grosses Durcheinander
 
Auch dann ist die "EntryTime" stets 0. Wahrscheinlich liegt es daran, dass ich irgendetwas übersehe. Werde einmal darüber schlafen und dann das Ganze nochmals versuchen.

Vielen Dank soweit!


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:59 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz