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

如何解決 Jet Oledb 欄位長度255的限制?

缺席
douglas
初階會員


發表:24
回覆:42
積分:38
註冊:2008-03-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-06-29 18:34:37 IP:59.125.xxx.xxx 訂閱
Delphi 2009

[ADOConnection]
Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=檔案實體路徑;
Extended Properties=Excel 8.0;
Persist Security Info=False;

ADOQry1負責選取資料來源
ADOTable1負責操作Excel檔案

ADOTable1.Append;
ADOTable1.FieldByName('欄位名稱').Value := ADOQry1.FieldByName('欄位名稱').AsString;
ADOTable1.Post;

當ADOQry1欄位裡的資料長度超過255時
ADOTable1.Post會發生E-Fail異常!!

請教各位大大, 這該從何著手解決??
編輯記錄
douglas 重新編輯於 2009-07-13 21:59:11, 註解 無‧
max5020
資深會員


發表:30
回覆:277
積分:321
註冊:2003-06-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-07-03 17:40:37 IP:59.120.xxx.xxx 訂閱
douglas
初階會員


發表:24
回覆:42
積分:38
註冊:2008-03-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-07-09 11:38:44 IP:59.125.xxx.xxx 訂閱
您好, 感謝您的熱心回覆.

您推薦的文章我有看過, 不過裡面的解決方法是採用以下方法
ExcelAP:= CreateOleObject('Excel.Application');

的確可以解決資料長度255的限制, 不過速度卻讓人詬病,
資料筆數在一萬筆以內的話, 勉強還能等待
一但在十萬筆以上, 加上欄位一多, 轉檔的時間就很恐怖了.
(還是是在下的知識不足, 尚有其他設定值可以改善?)

目前參考到的文章皆說明欄位長度的限制是Jet Oledb無法解決的問題... orz

===================引 用 max5020 文 章===================
請參考這篇 , 參考這篇, http://delphi.ktop.com.tw/board.php?cid=30&fid=1498&tid=98462
max5020
資深會員


發表:30
回覆:277
積分:321
註冊:2003-06-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-07-09 12:30:52 IP:59.120.xxx.xxx 訂閱
據我所知, 
EXCEL最多只能65536筆,
應該不會有十萬筆的情形,
我也知道樣很慢,
不過從EXCEL大量轉檔,
應該也不是常態!!
douglas
初階會員


發表:24
回覆:42
積分:38
註冊:2008-03-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-07-09 16:55:17 IP:59.125.xxx.xxx 訂閱
感謝您熱心答覆 ^_^

的確Excel每個WorkSheet有65536筆資料的限制
超過的部分採用開立下一資料頁或是新增第二個檔案來應對.

會採用Excel作為資料呈現的平台, 主要是考慮到使用者的便利.

我嘗試過使用CSV檔, 雖然沒有資料筆數的限制,
但是碰上UniCode的資料, Excel無法自動轉換, 造成使用者的不便.

目前正嘗試在MS-SQL伺服器端建立DTS服務
採用T-SQL語法觸發匯出
希望能順利 (阿迷豆腐...)

===================引 用 max5020 文 章===================
據我所知,
EXCEL最多只能65536筆,
應該不會有十萬筆的情形,
我也知道樣很慢,
不過從EXCEL大量轉檔,
應該也不是常態!!
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-07-10 15:58:03 IP:118.169.xxx.xxx 訂閱
用[缺席]結案? 有沒有弄錯?
douglas
初階會員


發表:24
回覆:42
積分:38
註冊:2008-03-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-07-13 09:46:38 IP:59.125.xxx.xxx 訂閱
您好:

因為問題一開始主要是小弟我不知道 Jet Oledb 操作 Excel 有欄位長度255的限制,
所以提出疑問, 求助各位大大們的智慧
後來持續閱讀站內其他文章才得知此限制

站內熱心前輩有提出其他的操作方式
但是並不是解決 Jet Oledb 欄位長度限制的方法
所以直覺的採用了[缺席]

若有不妥, 再請您說明.

===================引 用 taishyang 文 章===================
用[缺席]結案? 有沒有弄錯?
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-07-13 10:37:30 IP:118.169.xxx.xxx 訂閱
我以為問題的焦點在excel上
而且你的回應也說明
max5020的回應(下面紅字部分)可以解決長度限制的問題,雖然速度上不滿意
所以基本上我會認為已經解答了你"標題"的問題,只是衍伸出速度的問題


你的回應如下:
您推薦的文章我有看過, 不過裡面的解決方法是採用以下方法
ExcelAP:= CreateOleObject('Excel.Application');
的確可以解決資料長度255的限制, 不過速度卻讓人詬病,
douglas
初階會員


發表:24
回覆:42
積分:38
註冊:2008-03-05

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-07-13 17:00:16 IP:59.125.xxx.xxx 訂閱
您好:

因為在發問之前就已經先爬過文
自己也測試過站內提供各種操作 Excel 的方法
(包含 max5020 大大熱心提供的文章在發問之前也已閱讀過)
使用到 Jet Oledb 時發現最符合我的要求

但是使用過了一陣子才意外發生 E-Fail 的錯誤
經過查證才得知有欄位長度的限制

我想這個給分的反應應該是我這個個案吧 = ="
因為想要的是如何解決 Jet Oledb 欄位長度的限制
而不是其他操作 Excel 的方法

感謝您對於網民權益的關心 ^_^

===================引 用 taishyang 文 章===================
我以為問題的焦點在excel上
而且你的回應也說明
max5020的回應(下面紅字部分)可以解決長度限制的問題,雖然速度上不滿意
所以基本上我會認為已經解答了你"標題"的問題,只是衍伸出速度的問題


你的回應如下:
您推薦的文章我有看過, 不過裡面的解決方法是採用以下方法
ExcelAP:= CreateOleObject('Excel.Application');
的確可以解決資料長度255的限制, 不過速度卻讓人詬病,
編輯記錄
douglas 重新編輯於 2009-07-13 17:09:31, 註解 無‧
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#10 引用回覆 回覆 發表時間:2009-07-13 17:24:39 IP:118.169.xxx.xxx 訂閱
喔,建議標題改成[如何解決 Jet Oledb 欄位長度的限制]就不會有誤會了


系統時間:2024-11-23 6:15:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!