Thema: Delphi anmeldezeit berechnen

Einzelnen Beitrag anzeigen

Benutzerbild von ffomoon
ffomoon

Registriert seit: 1. Sep 2003
Ort: Frankfurt (Oder)
34 Beiträge
 
#1

anmeldezeit berechnen

  Alt 12. Sep 2003, 13:33
ich hab ein problem!!!
in einem dbgriid filter ich datensätze raus (von verschiedenen benutzern)
in der tabele gibt es die felder (datum, zeit :Tdatetime) und usernr!!
nun jetzt will ich die anmeldezeiten von den verschiedenen benutzern berechnen!!!
meine lösung weist einen grossen nachteil auf, sie geht jeden datensatz einzeln durch und das dauert bei einer größeren menge an datensätzen natürlich seine zeit!!!

kann mir jemand helfen eine lösung zu finden die besser ist!!??


hier nochmal meine bisherige lösung
Delphi-Quellcode:
var Arbeitszeit,tmp:TDateTime;
    Tage:integer;
begin
 if DBuserNR.Text<>'then {DBuserNr : TDBedit; }
  begin
   Logdatei.First;
   Arbeitszeit:=0;
    repeat
     tmp:=0;
     if (tmp=0) and (Logdatei.Fields.Fields[6].AsString='1') and (Logdatei.Fields.Fields[1].AsString<>'') then
      begin
       tmp:=Logdatei.Fields.Fields[0].AsDateTime+Logdatei.Fields.Fields[1].AsDateTime;
        repeat
         Logdatei.Next;
        until (Logdatei.Fields.Fields[6].AsString='2') or Logdatei.Eof;
         if Logdatei.Eof then Arbeitszeit:=Arbeitszeit+Now-tmp;
          if Logdatei.Fields.Fields[6].AsString='2then
           Arbeitszeit:=Arbeitszeit+(Logdatei.Fields.Fields[0].AsDateTime+Logdatei.Fields.Fields[1].AsDateTime)-tmp;
      end;
       Logdatei.Next;
    until Logdatei.Eof;
     Logdatei.First;
     Tage:=trunc(Arbeitszeit);
     Arbeitszeit:=Arbeitszeit-Tage;
    if Tage>0 then Label5.Caption:='Anmeldezeit: '+IntToStr(Tage);
     if Tage=1 then Label5.Caption:='Anmeldezeit: '+Label5.Caption+'Tag ';
      if Tage>1 then Label5.Caption:='Anmeldezeit: '+Label5.Caption+'Tage ';
       Label5.Caption:='Anmeldezeit von '+ComboBoxUSER.Text+': '+TimeToStr(Arbeitszeit)+' Std\Min\Sek';
  end;
end;
danke schonmal im voraus

moon
  Mit Zitat antworten Zitat