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

如何將文字檔讀入SQL2000資料庫

尚未結案
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-26 08:10:13 IP:61.228.xxx.xxx 未訂閱
在一行文字檔約500字,每段不固定長度,段與段之間是用Tab鍵區格 如何去判斷將文字檔載入資料庫 謝謝
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-26 10:13:55 IP:202.39.xxx.xxx 未訂閱
將文字檔讀入, 然後分解字串 以 Pos 來取得第一個 Tab 字元的位置(Tab 字元為 Char($09) 或 #9) 取得第一個 Tab 字元位置後, 以 Copy 取得第一段的值 取得第一段的值後, 以 Delete 刪除第一段值與第一個 Tab 字元 接著重覆同樣的程式, 直到文字檔字串沒了 再把各段的值填入 DB    --- 歡迎光臨 KTop 研究院
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-26 11:41:52 IP:211.21.xxx.xxx 未訂閱
引言: 在一行文字檔約500字,每段不固定長度,段與段之間是用Tab鍵區格 如何去判斷將文字檔載入資料庫 謝謝
提供一個作法: 利用TStringList CommaText的屬性即會依','將字串分開 ex:
var
  aSL1, aSL2: TStringList;
  I, J: Integer;
begin
  aSL1 := TStringList.Create;
  aSL2 := TStringList.Create;
  try
    aSL1.LoadFromFile('C:\Test.txt');
    for I := 0 to aSL1.Count - 1 do
    begin
      //經剛測試結果,不須將Tab換成逗點,直接用Tab一樣可切割字串
       //aSL1.Strings[I] := StringReplace(aSL1.Strings[I], #9, ',', [rfReplaceAll]);//將Tab換成逗點(',')
      aSL2.CommaText := aSL1.Strings[I];
      for J := 0 to aSL2.Count - 1 do
      begin
        //在此處已取得每一行,每一段的值,將值給DataSet即可
         //ex:
         //Query1.Fields[J].Value = aSL2.Strings[J];
      end;       
    end;
  finally
    FreeAndNil(aSL1);
    FreeAndNil(aSL2);
  end;
end;
~小弟淺見,參考看看~ 發表人 - channel 於 2003/09/26 14:03:16
------
~小弟淺見,參考看看~
Jasonwong
版主


發表:49
回覆:931
積分:581
註冊:2006-10-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-26 12:07:10 IP:203.75.xxx.xxx 未訂閱
這裡有一個範例,參考參考 http://www.cobbler.idv.tw/dvbbs/dispbbs.asp?boardid=34&id=87 -- 聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心
傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-26 13:42:11 IP:61.222.xxx.xxx 未訂閱
1.請問是將文字檔寫入資料庫還是從資料庫裡讀出文字存成檔案 2.另外,TStringList的commandText屬性值,雖然是以","號做為切割的符號,但如果傳入commandText的字串內有空白時,也會被切割.Ex: ss.CommandText:='Edit1 XXXX,XXXX XXXX,aaaa' 則 ss.strings[0]:='Edit1' ss.Strings[1]:='XXXX' ss.Strings[2]:='XXXX' ss.Strings[3]:='XXXX' ss.Strings[4]:='aaaa'
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-09-26 17:12:42 IP:61.228.xxx.xxx 未訂閱
引言: 這裡有一個範例,參考參考 http://www.cobbler.idv.tw/dvbbs/dispbbs.asp?boardid=34&id=87 -- 聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
我有Test出現 Error [Error] Unit1.pas(80): Undeclared identifier: 'OpenDialog1' 不知少了什麼?
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-09-26 17:51:23 IP:61.228.xxx.xxx 未訂閱
channel範例可行,不錯.謝謝 各位先進,我這樣寫法,不知有何缺失,請各位指導一下,謝謝 procedure TForm1.Button1Click(Sender: TObject); var F1:TextFile; FileName,AllStr:String; TmpStr:Char; begin FileName:='C:\123.ACR'; AssignFile(F1,FileName); Reset(F1); While not Eof(F1) do begin Read(F1,TmpStr); if tmpstr = Char($09) then begin //將AllStr所得結果存入各欄位 AllStr:=''; end else AllStr:=AllStr TmpStr; end; CloseFile(F1); end;
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-09-26 17:52:47 IP:61.222.xxx.xxx 未訂閱
引言:我有Test出現 Error [Error] Unit1.pas(80): Undeclared identifier: 'OpenDialog1' 不知少了什麼?
指的是OpenDialog1沒有定義,你拉個開檔的元件下來就可以了
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-09-30 08:44:00 IP:61.228.xxx.xxx 未訂閱
謝謝各位先進.
Jack0323
初階會員


發表:22
回覆:70
積分:28
註冊:2002-03-13

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-10-26 22:09:33 IP:211.74.xxx.xxx 未訂閱
我的另外一種想法 不知道可不可行 那就是使用BLOB的方式存入
japhenchen
高階會員


發表:51
回覆:444
積分:184
註冊:2003-07-23

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-10-27 11:06:22 IP:211.96.xxx.xxx 未訂閱
用BLOB就可以省去把TEXTFILE的內容存成字串再POST進DB FIELD的手續啦,節省下來的處理時間也不計其數,再來就是IMAGE BLOB可以支援到2GB的檔案..我現在都用這方法在管理辦公室的文件......    方法請參考下面連結 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=39464 我不懂,不懂,不懂....所以我才來ktop學工夫
系統時間:2024-04-29 20:24:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!