線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:802
推到 Plurk!
推到 Facebook!

请问各位关于如何引用QUERY得到的结果?

尚未結案
kleit
一般會員


發表:3
回覆:4
積分:1
註冊:2005-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-31 16:19:11 IP:61.55.xxx.xxx 未訂閱
数据库为PARADOX,将用SQL查询的字段DURATION的时间按小时、分、秒汇总,可已完成,但是结果是比如下面情况 HH MM SS 33 88 88 想改成结果显示为34小时29分28秒,请各位指点那里除了问题? var hour,min,sec:integer; h,m,s:integer; begin Query1.Close; Query1.SQL.clear; Query1.SQL.Add('Select sum(Extract(hour from duration)) as HH, sum(Extract(minute from duration)) as MM, sum(Extract(second from duration)) as SS from Table1 ); Query1.open; 以上可以实现,关于HH,MM,SS字段SUM后的结果引用有问题 Hour:=strtoint('HH'); Min:=strtoint('MM'); Sec:=strtoint('SS'); h:=Hour (Min div 60); m:=(Min mod 60) (Sec div 60); s:=Sec mod 60; label1.Caption:='时间是' IntToStr(h) '小时' IntToStr(m) '分' IntToStr(s) '秒';
wyndog
資深會員


發表:7
回覆:362
積分:348
註冊:2004-10-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-31 16:44:14 IP:60.248.xxx.xxx 未訂閱
引言: 以上可以实现,关于HH,MM,SS字段SUM后的结果引用有问题 Hour:=strtoint('HH'); Min:=strtoint('MM'); Sec:=strtoint('SS'); h:=Hour (Min div 60); m:=(Min mod 60) (Sec div 60); s:=Sec mod 60; label1.Caption:='时间是' IntToStr(h) '小时' IntToStr(m) '分' IntToStr(s) '秒';
請問 錯誤就是發生在 StrToInt('HH') 那嗎? Sum 了之後,HH, MM, SS 應該是整數了吧? 那引用欄位,只要這麼寫就行了:
Hour := Query1.FieldByName('HH').AsInteger;
Min  := Query1.FieldByName('MM').AsInteger;
Sec  := Query1.FieldByName('SS').ASInteger;
jimmy_wei
高階會員


發表:9
回覆:176
積分:147
註冊:2003-08-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-31 17:05:07 IP:210.68.xxx.xxx 未訂閱
var
  DT: TDateTime;
  iHH, iMM, iSS: Integer;
begin      DT:= 33/24 88/(24*60) 88/(24*3600);
  iHH:= Trunc(DT*24);
  iMM:= Trunc((DT*24-iHH)*60);
  iSS:= Trunc(((DT*24-iHH)*60-iMM)*60);      ShowMessage('時間是' IntToStr(iHH) '小時' IntToStr(iMM) '分' IntToStr(iSS) '秒');
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-31 17:07:14 IP:202.39.xxx.xxx 未訂閱
試試如下:
var
  h, m, s:integer;
begin
  Query1.Close;
  Query1.SQL.Add('Select sum(Extract(second from duration)) as SS from Table1');
Query1.open;      h := Query1.FieldByName('SS').AsInteger div 3600;
  m := (Query1.FieldByName('SS').AsInteger - h*3600) div 60;
  s := (Query1.FieldByName('SS').AsInteger - h*3600) - m*60;
  label1.Caption := '??是' 
                   IntToStr(h)   '小?'
                   IntToStr(m)   '分'
                   IntToStr(s)   '秒';
end;
-- 分擔可以輕省, 分享帶來喜樂!
kleit
一般會員


發表:3
回覆:4
積分:1
註冊:2005-03-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-04-01 21:37:52 IP:61.55.xxx.xxx 未訂閱
问题解决了,谢谢Reptile兄,特别感谢Hager版主提供的新思路,因Reptile先回答,所以给他加分了。
系統時間:2024-06-27 3:10:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!