如何解決下面這個問題﹗﹗﹗﹗﹗﹗﹗﹗﹗(50分)

  • 主题发起人 主题发起人 sxbing
  • 开始时间 开始时间
S

sxbing

Unregistered / Unconfirmed
GUEST, unregistred user!
字段'worktime'是個time型的計算字段﹐就是怎 麼樣實現時間累加﹐﹖﹖﹖數據庫是access
Function TSearchWork_Form.AddWorkTime : String;
begin
If Not Work_DM.SearchWork_Query.IsEmpty then
begin
Work_Dm.SearchWork_Query.First ;
While Not Work_Dm.SearchWork_Query.Eof do
begin
StrToTime(Result) :=
StrToTime(Result) + Work_Dm.SearchWork_Query.FieldByName('WorkTime').value ;
Work_Dm.SearchWork_Query.Next ;
end;
end;
end;
 
好象这样加不会进位啊,大于24小时会丢掉天数的.还是自己写个函数将time各个域解开
再按时间进位规则累计的好,或者干脆转化为数值型(以秒为单位)相加。
 
Function TSearchWork_Form.AddWorkTime : String;
var d,h,m,s:integer;
begin
d:=0;
h:=0;
m:=0;
s:=0;
If Not Work_DM.SearchWork_Query.IsEmpty then
begin
Work_Dm.SearchWork_Query.First ;
While Not Work_Dm.SearchWork_Query.Eof do
begin
h:=h+strtoint(formatdatetime('hh',Work_Dm.SearchWork_Query.FieldByName('WorkTime').value);
m:=m+strtoint(formatdatetime('nn',Work_Dm.SearchWork_Query.FieldByName('WorkTime').value);
s:=s+strtoint(formatdatetime('ss',Work_Dm.SearchWork_Query.FieldByName('WorkTime').value);
Work_Dm.SearchWork_Query.Next ;
end;
m:=m + (s div 60);
h:=h + (m div 60);
d:=h div 24;
h:=h mod 24;
m:=m mod 60;
s:=s mod 60;
result:=inttostr(d)+'天'+inttostr(h)+'小时'+inttostr(m)+'分'+inttostr(s)+'秒';
end;
end;
 
在DELPHI中的日期时间字段其实是一个FLOAT的浮点数你可以直接通过
Work_Dm.SearchWork_Query.FieldByName('WorkTime').asdatetime来相加
 
OK﹐ 感謝參與。。
 
多人接受答案了。
 
后退
顶部