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

把數據庫資料導入到excel中速度的優化

答題得分者是:cashxin2002
zch2002115
一般會員


發表:24
回覆:15
積分:7
註冊:2004-11-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-10 09:07:32 IP:210.75.xxx.xxx 未訂閱
請教各位高手: 我現在要把數據庫中的資料導入到excel中,速度非常慢。請教有什麼方法能快些,謝謝,下面是我的代碼 [code\] WITH Q3 DO BEGIN CLOSE; SQL.Text:='SELECT isnull(PP01,'''') as pp01,isnull(PP02,'''') as pp02,isnull(PP03,'''') as pp03,isnull(PP04,'''') as pp04,isnull(PP05,'''')as pp05,'; SQL.Text:=SQL.Text 'isnull(PP06,'''') as pp06,isnull(PP07,'''') as pp07,SUM(ISNULL(PCS1,'''')) AS PCS1,SUM(ISNULL(PCS2,''''))AS PCS2,SUM(ISNULL(PCS3,''''))AS PCS3,'; SQL.Text:=SQL.Text 'SUM(ISNULL(PCS4,''''))AS PCS4,SUM(ISNULL(PCS5,''''))AS PCS5,SUM(ISNULL(PCS6,''''))AS PCS6,SUM(ISNULL(PCS7,''''))AS PCS7,SUM(ISNULL(PCS8,''''))AS PCS8,'; SQL.Text:=SQL.Text 'SUM(ISNULL(PCS9,''''))AS PCS9,SUM(ISNULL(PCS10,''''))AS PCS10,SUM(ISNULL(PCS11,''''))AS PCS11,SUM(ISNULL(PCS12,''''))AS PCS12 FROM ##K_PP4 '; SQL.Text:=SQL.Text 'GROUP BY isnull(PP01,''''),isnull(PP02,''''),isnull(PP03,''''),isnull(PP04,''''),isnull(PP05,''''),isnull(PP06,''''),isnull(PP07,'''') ORDER BY PP02 DESC,pp03'; open; IF RECORDCOUNT>0 THEN BEGIN xlapp:=createoleobject('excel.application'); xlapp.workbooks.open('d:\CPC-2005.xls',,true); SHEET:=XLAPP.WORKBOOKS[1].WORKSHEETS[1]; SHEET.CELLS.ITEM[5,2]:=COPY(TODAY,3,2) '/' COPY(TODAY,5,2) '/' COPY(TODAY,1,2); I:=7; XLAPP.VISIBLE:=TRUE; WHILE NOT EOF DO BEGIN SHEET.CELLS.ITEM[I,1]:=FIELDBYNAME('PP02').AsString; SHEET.CELLS.ITEM[I,2]:=FIELDBYNAME('PP01').AsString; SHEET.CELLS.ITEM[I,3]:=FIELDBYNAME('PP03').AsString; SHEET.CELLS.ITEM[I,4]:=FIELDBYNAME('PP04').AsString; SHEET.CELLS.ITEM[I,5]:=FIELDBYNAME('PP05').AsString; SHEET.CELLS.ITEM[I,6]:=FIELDBYNAME('PP06').AsString; SHEET.CELLS.ITEM[I,7]:=FIELDBYNAME('PP07').AsString; SHEET.CELLS.ITEM[I,8]:=FIELDBYNAME('PCS1').AsString; SHEET.CELLS.ITEM[I,9]:=FIELDBYNAME('PCS2').AsString; SHEET.CELLS.ITEM[I,10]:=FIELDBYNAME('PCS3').AsString; SHEET.CELLS.ITEM[I,11]:=FIELDBYNAME('PCS4').AsString; SHEET.CELLS.ITEM[I,12]:=FIELDBYNAME('PCS5').AsString; SHEET.CELLS.ITEM[I,13]:=FIELDBYNAME('PCS6').AsString; SHEET.CELLS.ITEM[I,14]:=FIELDBYNAME('PCS7').AsString; SHEET.CELLS.ITEM[I,15]:=FIELDBYNAME('PCS8').AsString; SHEET.CELLS.ITEM[I,16]:=FIELDBYNAME('PCS9').AsString; SHEET.CELLS.ITEM[I,17]:=FIELDBYNAME('PCS10').AsString; SHEET.CELLS.ITEM[I,18]:=FIELDBYNAME('PCS11').AsString; SHEET.CELLS.ITEM[I,19]:=FIELDBYNAME('PCS12').AsString; SHEET.CELLS.ITEM[I,20]:='=SUM(H' INTTOSTR(I) ':S' INTTOSTR(I) ')'; INC(I); NEXT; END; END; END;[\code]
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-10 09:54:40 IP:202.62.xxx.xxx 未訂閱
您好﹗    請問Q3是何資料集元件﹐如果是使用ADO存取方法﹐可以直接使用SQL語法來做匯出的動作﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
zch2002115
一般會員


發表:24
回覆:15
積分:7
註冊:2004-11-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-10 11:02:34 IP:210.75.xxx.xxx 未訂閱
你好,    我的q3是adoquery控件    我知道你是的意思是說讓我用下面的代碼: begin   ADOQuery1.Close;   ADOQuery1.SQL.Text := 'Select * Into [Sheet1] '     + 'In "D:\Test.xls" "Excel 8.0;" From 資料表';   ADOQuery1.ExecSQL; end;    可是執行時候出現錯誤信息 關鍵字 'in' 附近的語法不正確。
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-10-10 14:54:37 IP:202.62.xxx.xxx 未訂閱
您好﹗
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Text := 'Select * Into [Sheet1] '
    + 'In "D:\Test.xls" "Excel 8.0;" From 資料表';
  ADOQuery1.ExecSQL;
end;
從語法上來看應該是沒有問題﹐您目前的MDAC是什么版本﹐用如下的方法查查看﹐如果是舊版本﹐更新成MDAC2.8試試﹕
在Form中加入一個ADOConnection元件﹒
begin
  ShowMessage(ADOConnection1.Version);
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
zch2002115
一般會員


發表:24
回覆:15
積分:7
註冊:2004-11-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-10-10 15:08:09 IP:210.75.xxx.xxx 未訂閱
你好! 我按照你給的代碼執行所show出的是2.7 不知道該怎麼改MDAC 請指教
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-10-10 15:51:11 IP:202.62.xxx.xxx 未訂閱
您好﹗    MDAC 2.8英文版下載﹕ http://www.microsoft.com/downloads/details.aspx?familyid=6C050FE3-C795-4B7D-B037-185D0506396C&displaylang=en    MDAC 2.8中文繁體版下載﹕ http://download.microsoft.com/download/9/8/4/9847e2f1-d076-49cc-be94-e376364a0292/MDAC_TYP.EXE    如果要中文簡體版的﹐請至Microsoft中國網站下載中心下載    下載完成后直接執行安裝程式即可﹒    另請注意一些MDAC 2.8的說明﹐因為2.8版本並不包含 Microsoft Jet、Microsoft Jet OLE DB Provider、Desktop Database Drivers ODBC Driver 或 Visual FoxPro ODBC Driver﹐在需要使用的時候這些Provider或Driver的時候要另外下載安裝﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
zch2002115
一般會員


發表:24
回覆:15
積分:7
註冊:2004-11-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-10-11 08:38:37 IP:210.75.xxx.xxx 未訂閱
高手, 我將MDAC更新為2.8版本的,可是運行之後還是有那個錯誤 關鍵字 'In' 附近的語法不正確。
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-10-11 08:54:20 IP:202.62.xxx.xxx 未訂閱
您好﹗    這里有篇相同的﹕ http://delphi.ktop.com.tw/topic.php?topic_id=71738    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
系統時間:2024-05-19 20:18:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!