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

請問用ado讀取csv的問題...欄位會讀不到變成空白

尚未結案
tack8800
一般會員


發表:11
回覆:4
積分:3
註冊:2006-07-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-03-17 10:04:25 IP:203.69.xxx.xxx 訂閱
目前小弟有一個csv檔案格式的文件
其實不過就是用逗號作區隔的文字檔
內容為下

F0001,10000T,5,3,6,1
F0002,5000,5,3,6,1
F0003,3000,5,3,6,1
F0004,2000,5,3,6,1

但是當用ADO連結讀取裡頭的內容實發生了很奇怪的事件
就是第一行的10000T會變成空白也就是null
但是啊,如果第二欄的欄位全為整數而沒有字元
就全都讀的到
或者最後一行的第二欄為字元格式也都讀的到沒有null

發現只有在最後一行的第二欄為整數時,如果其他行的第二欄為字元格式就讀不到

請問有沒有大大了解為什麼會這樣,或者有什麼辦法可以解決
但是在無法變更這個csv文件的前提之下解決
也不要用其他的方式寫,我想問的是有沒有改變什麼連結的方法可以解決目前這問題



ADO.ConnectionString的連結語法為
Provider=Microsoft.Jet.OLEDB.4.0;Data Source='檔案位置/1.csv';Extended Properties="Text;HDR=NO;FMT=Delimited;CharacterSet=ANSI";Persist Security Info=False

ADOquery的SQL為
select F1,F2,F3,F4,F5,F6,F7,F8,F9,F10 from 檔案位置/1.csv
編輯記錄
tack8800 重新編輯於 2008-03-17 10:06:38, 註解 無‧
tack8800 重新編輯於 2008-03-17 15:05:44, 註解 無‧
douglas
初階會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-03-18 21:51:14 IP:122.127.xxx.xxx 訂閱
說實話,我不知道ADO可以讀資料....拍謝~我還是剛入門的菜鳥
我提供我讀CSV的方法:
isFile : Textfile;
Str : String;

AssignFile(isFile, '檔案路徑');
ReSet(isFile); //開啟舊檔
ReadLn(isFile,Str); //逐行讀取

dot := ','; //存入逗號
P := Position(dot, Str); //取得逗號的位置
getdata := Copy(Str, 1, P-1); //取得第一個欄位值
Str := Copy(Str, P 1,Length(Str)-P); //重新取得 (濾掉已經取值的欄位)
//上面這行, 看是要用Delet也行啦, 看你的需求

跑完迴圈, 就取完ㄧ行資料了.
編輯記錄
douglas 重新編輯於 2008-03-18 21:52:23, 註解 無‧
系統時間:2024-05-17 0:05:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!