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

怎麼將TreeView的結構存至Access

尚未結案
yeeddt
初階會員


發表:18
回覆:28
積分:29
註冊:2008-11-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-02-04 19:17:24 IP:211.21.xxx.xxx 訂閱
各位前輩好!
我的程式當中有個TreeView,可以新增、移除節點。
我想連結構、StateIndex和ImageIndex一同儲存,讀取此檔回來可以讓TreeView和儲存時一樣。

經由taishyang前輩的幫忙,已經可以利用WriteComponent及ReadComponent紀錄TreeView的狀態。
也能存成.mdb檔,但是無法利用Access開啟。
請問該怎麼存檔到.mdb檔中的某個資料表?
[code cpp]
//儲存
void __fastcall TForm1::Button1Click(TObject *Sender)
{

TFileStream *f;
f = new TFileStream("C:\\Test\\test.mdb",fmCreate);
f->WriteComponent(TreeView);
delete f;
}
//讀取
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TFileStream *f;
f = new TFileStream("
C:\\Test\\test.mdb",fmOpenRead);
f->ReadComponent(
TreeView);
delete f;
}

[/code]
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-02-04 23:37:17 IP:59.126.xxx.xxx 訂閱
我想您誤會 taishyang 前輩的意思了

存成什麼檔名,那是在您給他的名稱時設定的,但不代表他就是那個格式
存成 Test.MDB 不代表就是 Access 的檔案哦!!!

先建立一個 access 的資料庫,開一個 Table 含 (Ole物件 或是附件 欄位),把你的 Write 之後的檔案塞進去那個欄位就行了!
------
價值的展現,來自於你用哪一個角度來看待它!!
yeeddt
初階會員


發表:18
回覆:28
積分:29
註冊:2008-11-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-02-05 09:35:41 IP:211.21.xxx.xxx 訂閱

===================引 用 careychen 文 章===================
我想您誤會 taishyang 前輩的意思了

存成什麼檔名,那是在您給他的名稱時設定的,但不代表他就是那個格式
存成 Test.MDB 不代表就是 Access 的檔案哦!!!

先建立一個 access 的資料庫,開一個 Table 含 (Ole物件 或是附件 欄位),把你的 Write 之後的檔案塞進去那個欄位就行了!
======================================================
您好,感謝前輩熱心的回應!
我不太懂前輩說的意思。
您的意思是要先Write一個檔後才能把它傳進這個資料表中嗎?
昨天想了很久,還是不知道該怎麼把檔內的東西存進某個資料表。

編輯記錄
yeeddt 重新編輯於 2009-02-05 09:42:30, 註解 無‧
taishyang
站務副站長


發表:377
回覆:5486
積分:4552
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-02-05 09:49:35 IP:118.169.xxx.xxx 訂閱
發問者原來是這樣問的 ^_^
http://delphi.ktop.com.tw/board.php?cid=168&fid=913&tid=97062
所以我只有回應TFileStream怎麼用,而且小弟不會資料庫 :P



===================引 用 careychen 文 章===================
我想您誤會 taishyang 前輩的意思了
yeeddt
初階會員


發表:18
回覆:28
積分:29
註冊:2008-11-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-02-06 15:34:10 IP:211.21.xxx.xxx 訂閱
各位前輩好!
我利用下面的方式建立一個檔儲存TreeView的結構。
該檔由文書處理器打開是一串亂碼。
[code cpp]
TFileStream *f;
f = new TFileStream("
C:\\test\\test.txt",fmCreate);
f->WriteComponent(CategoryTree);
delete f;

[/code]

因此我以為可以利用下面的方式把這串亂碼寫進去資料表的欄位。
資料表及欄位都事先建立完成,欄位也設定為最大長度。
經過測試,會顯示SQL語法錯誤,不曉得是不是寫入的資料量太大。

[code cpp]
TStringList *testString = new TStringList();
testString->LoadFromFile("C:\\test\\test.txt");

ADOQuery1->Close();
ADOQuery1->SQL->Clear();

String SqlCommand = "INSERT INTO 資料表(欄位名稱)";
ADOQuery1->SQL->Add(SqlCommand);

String s1 = testString->Strings[0];
String s2 = "This is a test";
ADOQuery1->SQL->Add("values('" s1 "')"); //如果改成s1就可順利存入欄位

ADOQuery1->ExecSQL();

delete testString;
[/code]

請問前輩們有什麼方法能解決呢?

P.S.
阿子副站長在如何用程式建立一個空的Access資料庫 有分享了一個source code但已經失效了。
不知道有沒有前輩還留有這個檔可以重新放上來給小弟參考一下?
編輯記錄
yeeddt 重新編輯於 2009-02-06 15:35:20, 註解 無‧
yeeddt 重新編輯於 2009-02-06 15:36:02, 註解 無‧
yeeddt 重新編輯於 2009-02-06 15:50:10, 註解 無‧
Ktop_Robot
站務副站長


發表:0
回覆:3511
積分:0
註冊:2007-04-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-07-11 03:36:30 IP:000.000.xxx.xxx 未訂閱
提問者您好:


以上回應是否已得到滿意的答覆?


若已得到滿意的答覆,請在一週內結案,否則請在一週內回覆還有什麼未盡事宜,不然,
將由版主(尚無版主之區域將由副站長或站長)自由心證,選擇較合適之解答予以結案處理,
被選上之答題者同樣會有加分獎勵同時發問者將受到扣 1 分的處分。不便之處,請見諒。


有問有答有結案,才能有良性的互動,良好的討論環境需要大家共同維護,感謝您的配合。

------
我是機器人,我不接受簡訊.
Ktop_Robot
站務副站長


發表:0
回覆:3511
積分:0
註冊:2007-04-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-07-11 03:37:04 IP:000.000.xxx.xxx 未訂閱
提問者您好:


以上回應是否已得到滿意的答覆?


若已得到滿意的答覆,請在一週內結案,否則請在一週內回覆還有什麼未盡事宜,不然,
將由版主(尚無版主之區域將由副站長或站長)自由心證,選擇較合適之解答予以結案處理,
被選上之答題者同樣會有加分獎勵同時發問者將受到扣 1 分的處分。不便之處,請見諒。


有問有答有結案,才能有良性的互動,良好的討論環境需要大家共同維護,感謝您的配合。

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