全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:951
推到 Plurk!
推到 Facebook!

请指教怎样改善?

尚未結案
liangzai
初階會員


發表:77
回覆:91
積分:33
註冊:2004-08-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-12-08 16:58:41 IP:218.19.xxx.xxx 未訂閱
我现在从存放上下班的TXT文档中(比如说文件名20051101,20051102。。。。。。通常选择多个文本,里面的数据是这样的形式: 000460670003685020051117080000P10(上班) 000460970003685020051117170000P20(下班)。。。) 提取最早上班和最晚下班的时间,我使用现在这种方式,需要很长的时间读取数据到数据库中,请教一下怎样改善,谢谢! var fname,instring:string; /将txt文档数据读至table1 infile:Textfile; I,J,K:integer; sDataStringList:TStringList; sEmpNo,sDate:string; begin //..........1......... dm.Table1.Active:=false; dm.Table1.EmptyTable; dm.Table1.ReadOnly:=false; dm.Table1.Active:=true; if(opendialog1.Execute) and (copy(opendialog1.FileName,2,2)=':\') then begin //...........2.......... sDataStringList:=TStringList.Create; try for I:=1 to opendialog1.Files.Count do begin //..........3.......... J:=I; if J=opendialog1.Files.Count then J:=0; fname:=opendialog1.Files.Strings[J]; assignfile(infile,fname); reset(infile); while not Eof(infile) do begin //........4......... readln(infile,instring); with gtemp1 do begin if copy(instring,1,4)='0000' then gtemp1.employee_no:=copy(instring,5,4) else gtemp1.employee_no:=copy(instring,4,5); gtemp1.g_date:=copy(instring,17,8); gtemp1.g_time:=copy(instring,25,2) copy(instring,27,2); gtemp1.text:=copy(instring,31,3); end; if gtemp1.text='P10' then begin if not dm.Table1.Locate('Employee_no;G_date;Text',vararrayof([gtemp1.employee_no,gtemp1.g_date,gtemp1.text]),[]) then begin with dm.Query1 do begin close; sql.Clear; sql.Text:='insert into ":hr:gsw1.db" (Employee_No,G_date,G_time,Text)'; sql.Append('values("' gtemp1.employee_no '","' gtemp1.g_date '","' gtemp1.g_time '","' gtemp1.text '")'); prepare; execsql; end; end; end; if gtemp1.text='P20' then sDataStringList.Add(instring); end; //........4........ closefile(infile); if (sDataStringList.Count>0) then begin sDataStringList.Sort; sEmpNo := LeftStr(sDataStringList[sDataStringList.Count-1],8); sDate:= LeftStr(sDataStringList[sDataStringList.Count-1],24); for K:=sDataStringList.Count-2 downto 0 do begin if (sEmpNo=LeftStr(sDataStringList[K],8)) and (sDate=LeftStr(sDataStringList[K],24)) then sDataStringList.Delete(K) else begin sEmpNo := LeftStr(sDataStringList[K],8); sDate:= LeftStr(sDataStringList[K],24); end; end; end; for K:=0 to sDataStringList.Count-1 do begin with gtemp1 do begin if copy(sDataStringList[K],1,4)='0000' then gtemp1.employee_no:=copy(sDataStringList[K],5,4) else gtemp1.employee_no:=copy(sDataStringList[K],4,5); gtemp1.g_date:=copy(sDataStringList[K],17,8); gtemp1.g_time:=copy(sDataStringList[K],25,2) copy(sDataStringList[K],27,2); gtemp1.text:=copy(sDataStringList[K],31,3); end; with dm.Query1 do begin close; sql.Clear; sql.Text:='insert into ":hr:gsw1.db" (Employee_No,G_date,G_time,Text)'; sql.Append('values("' gtemp1.employee_no '","' gtemp1.g_date '","' gtemp1.g_time '","' gtemp1.text '")'); prepare; execsql; end; end; end; //........3........ finally sDataStringList.Free; end; end; //.........2......... //将txt文档数据读至table1
liangzai
初階會員


發表:77
回覆:91
積分:33
註冊:2004-08-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-12-09 08:41:25 IP:218.19.xxx.xxx 未訂閱
那位大哥能不能帮忙看一下,谢谢!
liangzai
初階會員


發表:77
回覆:91
積分:33
註冊:2004-08-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-12-10 10:20:03 IP:219.137.xxx.xxx 未訂閱
怎么没有哪位前辈能够指教一下?我现在这样做,如果将一个月30天的所有打卡记录导入到数据库时,会需要近一个小时的时间,效率很低,CPU只能一直在做这件事。 请指教一个提取最早上班和最晚下班记录到数据库的好方法,急,谢谢! 00046067(工号)00036850(卡号)20051117(日期)080000(时间)P10(表示上班) 00046097(工号)00036850(卡号)20051117(日期)170000(时间)P20(表示下班) 如果能够在这段代码上改善,要怎么做?那位大哥抽空看一下,非常感谢!
liangzai
初階會員


發表:77
回覆:91
積分:33
註冊:2004-08-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-12-11 21:51:26 IP:218.19.xxx.xxx 未訂閱
为什么没有哪位斑竹,高手能帮我一下,小弟感谢不尽!
kgt
高階會員


發表:17
回覆:308
積分:165
註冊:2002-03-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-12-13 08:30:53 IP:210.243.xxx.xxx 未訂閱
hi liangzai日安: 我先來建議一下好了,其他大大可能因年底的關係,很多事情要做, 如有不周到的地方,請多包涵。 1.是否新增一個暫存檔在temp.db中,只有一個欄位. 2.將11月的所有文字檔全部轉入temp.db,不做any切割欄位處理 3.再透過SQL語法去找出您要的結果,再存到":hr:gsw1.db"中
系統時間:2024-05-17 9:57:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!