查詢某天所有的工作時間 |
答題得分者是:GrandRURU
|
qqer
一般會員 發表:5 回覆:4 積分:1 註冊:2010-03-24 發送簡訊給我 |
procedure TForm1.Button1Click(Sender: TObject); VAR Last_DATE: String; TEMP_DATEF,TEMP_DATET,SQL_DATE,TEMP_X: TDATETIME; HCunt: Integer; begin TEMP_DATEF:=STRTODATE(EDIT1.TEXT); TEMP_DATET:=STRTODATE(EDIT2.TEXT); //清空暫存檔 With FORM1.Query3 Do Begin Close; SQL.Clear; SQL.Add('delete From Check_Schedule'); If (not Prepared) Then Prepare; ExecSQL; END; With FORM1.Query1 Do Begin Close; SQL.Clear; SQL.Add('Select * From Check_Response,Check_Item,Check_Kind Where Response_EQMT=Item_ID AND Item_check=Kind_ID '); If (DBLookupComboBox1.Text<>'') Then SQL.Add(' And Response_MEMBER = :XMBM '); If (DBLookupComboBox2.Text<>'') Then SQL.Add(' And Response_EQMT = :XEQMT '); If (DBLookupComboBox3.Text<>'') Then SQL.Add(' And Item_check = :XITEM '); SQL.Add(' ORDER BY Response_MEMBER,Response_EQMT '); If (DBLookupComboBox1.Text<>'') Then ParamByName('XMBM').Asstring := DBLookupComboBox1.Text; If (DBLookupComboBox2.Text<>'') Then ParamByName('XEQMT').Asstring := DBLookupComboBox2.Text; If (DBLookupComboBox3.Text<>'') Then ParamByName('XITEM').Asstring := DBLookupComboBox3.Text; Open; WHILE NOT EOF DO BEGIN Last_DATE:=''; //該設備已檢查的資料最後日期 With FORM1.Query2 Do Begin Close; SQL.Clear; SQL.Add('Select * From Check_Results Where Results_MEMBER = :_MEMBER AND Results_EQMT = :_EQMT AND Results_ITEM = :_check ORDER BY Results_DATE DESC '); ParamByName('_MEMBER').Asstring := FORM1.Query1.FieldByName('Response_MEMBER').ASString; ParamByName('_EQMT').Asstring := FORM1.Query1.FieldByName('Response_EQMT').ASString; ParamByName('_check').Asstring := FORM1.Query1.FieldByName('Kind_ID').ASString; open; Last_DATE:=FORM1.Query2.FieldByName('Results_DATE').ASString; close; end; //如果這筆是新的未被排過 IF Last_DATE = '' THEN BEGIN //日期使用(檢查日期-起) TEMP_X:=TEMP_DATEF; END ELSE BEGIN //某工作項目紀錄的最後一天 該工作項目的頻率 > (檢查日期-起) //日期使用(某工作項目紀錄的最後一天 該工作項目的工時) IF STRTODATE(Last_DATE) FORM1.Query1.FieldByName('Kind_Freq').ASInteger > TEMP_DATEF THEN TEMP_X:=STRTODATE(Last_DATE) FORM1.Query1.FieldByName('Kind_Freq').ASInteger ELSE //日期使用(檢查日期-起) TEMP_X:=TEMP_DATEF; END; //一直排到(檢查日期-終) WHILE TEMP_X <= TEMP_DATET DO BEGIN //帶入SQL的日期預設為(檢查日期-起) SQL_DATE:=TEMP_DATEF; HCunt:=40; While HCunt >= 30 do BEGIN //查詢排程某天的工時 With FORM1.Query4 Do Begin Close; SQL.Clear; SQL.Add('Select sum(Results_Workh) as HCunt From Check_Results Where Results_MEMBER = :_MEMBER AND Results_EQMT = :_EQMT AND Results_ITEM = :_check AND Results_DATE = :SQL_DATE '); ParamByName('_MEMBER').Asstring := FORM1.Query1.FieldByName('Response_MEMBER').ASString; ParamByName('_EQMT').Asstring := FORM1.Query1.FieldByName('Response_EQMT').ASString; ParamByName('_check').Asstring := FORM1.Query1.FieldByName('Kind_ID').ASString; open; HCunt:=FORM1.Query4.FieldByName('HCunt').value; close; end; //如果當天工時超過 則日期 1繼續回到迴圈 If HCunt > 30 then begin SQL_DATE:=SQL_DATE 1; end; ParamByName('SQL_DATE').AsDateTime :=FORM1.Query2.FieldByName('Results_DATE').AsDateTime; end; NEXT; TEMP_X:=SQL_DATE; table5.Open; table5.first; if NOT table5.Locate('Temp_MEMBER;Temp_EQMT;Temp_ITEM;Temp_DATE',vararrayof([FORM1.Query1.FieldByName('Response_MEMBER').ASString,FORM1.Query1.FieldByName('Response_EQMT').ASString,FORM1.Query1.FieldByName('Kind_ID').ASString,FormatDateTime('yyyy/mm/dd',TEMP_X)]),[]) then begin table5.Append; table5.FieldByName('Temp_MEMBER').asstring:=FORM1.Query1.FieldByName('Response_MEMBER').ASString; table5.FieldByName('Temp_EQMT').asstring:=FORM1.Query1.FieldByName('Response_EQMT').ASString; table5.FieldByName('Temp_ITEM').asstring:=FORM1.Query1.FieldByName('Kind_ID').ASString; table5.FieldByName('Temp_DATE').asstring:=FormatDateTime('yyyy/mm/dd',TEMP_X); table5.Post; end; table5.Close; TEMP_X:=TEMP_X FORM1.Query1.FieldByName('Kind_Freq').ASInteger; END; NEXT; END; end; table5.close; table5.OpEN; 此按鈕是先加上同一天的所有工時,然後去判別有沒有超過特定時數,一旦超過就儲存在未滿特定時數的天數。 在執行程式的時候出現'QUERY4:field 'SQL_DATE' is of an unknown type'. 不知道怎麼修正,下面有附上程式,請幫我解惑,謝謝。 |
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |