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='2' then
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