EXCEL輸出問題 |
缺席
|
lasterliu
一般會員 發表:38 回覆:57 積分:19 註冊:2007-11-05 發送簡訊給我 |
詢問各位大大,我在將檔案輸出成EXCEL檔時,碰到一個問題,就是我的標題欄位明明有74個,為什麼每次都只能輸出65個。 因此想詢問有沒有大大了解原因及解決方法 。 procedure TMWPR000F.BT_ChangeXLSClick(Sender: TObject); Const // 設定欄位寬度 Width : Array[1..74] of Real = (11.5,5,6.5,9,18.5,6.5,9,13.5,12,13,9,9,6,5,7,5,4.5,7,7,6.5,6,6,6,6.5,7,10.5,11.5,11.5,6,8.5,10,8.5,10,11.5,5,7.5,9,5,7,9,6,8,10,6,11,12,8.5,12,8.5,13.5,11.5,10,8,8.5,9,9,9.5,7.5,10,10,4.5,7.5,13,6,6,5,5,5,5,6,5,7,5,5,5); var MyExcel : Variant; x,y : integer; begin inherited; MyExcel := CreateOleOBject('Excel.Application'); MyExcel.WorkBooks.Add; MyExcel.Visible := True; y:=1; for x:=1 to ADOSQL1.FieldCount do begin // 將標題設為第一欄內容 MyExcel.WorkBooks[1].WorkSheets[1].Cells[y,x] := ADOSQL1.Fields[x-1].DisplayName; // 標題欄位選取 MyExcel.WorkBooks[1].WorkSheets[1].Cells[y,x].Select; // 將標題欄位變粗體字 MyExcel.Selection.Font.Bold := true; // 將標題欄位變色 //MyExcel.WorkBooks[1].WorkSheets[1].rows[1].columns[x].Interior.Color := $0C0A0B6;; // 自動設定欄位寬度 //MyExcel.WorkBooks[1].WorkSheets[1].Columns[x].ColumnWidth := ADOSQL1.Fields[x-1].DisplayWidth; // 手動設定欄位寬度 MyExcel.WorkBooks[1].WorkSheets[1].Columns[x].ColumnWidth := Width[x-1]; end; inc(y); while not ADOSQL1.Eof do begin for x:=1 to ADOSQL1.FieldCount do MyExcel.WorkBooks[1].WorkSheets[1].Cells[y,x] := ADOSQL1.Fields[x-1].AsString; inc(y); ADOSQL1.Next; end; end; 以下為我出現的錯誤訊息(此錯誤訊息為我將迴圈的ADOSQL1.FieldCount 改成真實欄數 74 才會發生,不然他會順利跑完,但只會列出65個欄位)。 Project MWPR000.exe raised exception class EListError with message 'List index out of bounds(65)'.Process stopped. 麻煩各位大大替小弟解答一下~~ |
h@visli
資深會員 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
lasterliu
一般會員 發表:38 回覆:57 積分:19 註冊:2007-11-05 發送簡訊給我 |
|
lasterliu
一般會員 發表:38 回覆:57 積分:19 註冊:2007-11-05 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
1.一般join兩個資料庫時我們通常不會使用 select * 方式操作(應該說根本不會), 我們寧可多花一分鐘把所有欄位打入, 例如 select A.FIELD1, A.FIEL2, B.FIEL1
2.你的完整錯誤是否可以擷圖下來貼上來看, 因為有時候你認知中翻譯出來讓我們知道的訊息不一定是原文的意思! ===================引 用 lasterliu 文 章=================== 回P.D大大~~~ P.D大大,我的欄位我算過是74個,原本的程式我只取(Select * From A)欄位只有63個,程式就都OK。 接著我將程式改為(Select * From A,B)欄位變成74個,而結果卻只有第一個TABLE中的63個欄位加第二個TABLE的前兩個欄位,就不跑了。 因此想詢問各位大大,看是否知道為什麼?麻煩大家給小弟解答一下~~~︿︿謝謝 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |