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

DBGrid沒有出現正確表格內容的問題

尚未結案
joey_yang
一般會員


發表:6
回覆:5
積分:2
註冊:2004-02-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-01 12:05:39 IP:61.59.xxx.xxx 未訂閱
各位高手,小弟又有個問題想請教大家了, 我以ADOQuery將資料加入資料庫的程式段落如下: ADOQuery_Csv->Close(); ADOQuery_Csv->SQL->Clear(); ADOQuery_Csv->SQL->Add("Insert into test(識別碼,positions) values (" other_data[0] ",'" other_data[1] "')"); ADOQuery_Csv->ExecSQL(); 今天我把二筆資料放入表格內(表格看的到內容),但很奇怪的是DBGrid的資料確始終只有一筆而已(第一筆是正確的),不知各位高手能否看出來問題可能在那裡?相關的設定如下: ADOQuery_Csv->Close(); ADOConnection_Rtable->ConnectionString="Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" DBPath; ADOConnection_Rtable->LoginPrompt=false; ADOConnection_Rtable->Connected=true; ADODataSet_Rtable->Active=false; ADODataSet_Rtable->CommandType=cmdTable; ADODataSet_Rtable->CommandText="Test"; ADODataSet_Rtable->Active=true; DataSource_Rtable->DataSet=ADODataSet_Rtable; DBGrid_Rtable->DataSource=DataSource_Rtable; 還有若上面資料表想設定識別碼欄位為自動增加的索引,又該如何設定呢?目前我只能做到索引,但自動增加則做不出來? Create table test(識別碼 int primary key,positions char(12),longitude char(10),latitude char(10),name char(50)); 請教各位先進,謝謝!
erosme
初階會員


發表:5
回覆:44
積分:29
註冊:2002-12-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-01 13:29:57 IP:61.62.xxx.xxx 未訂閱
Dear Joey_yang, 你應該是沒有 update adoquery. 最簡單的測試方法是將 DataBase Close 後再打開. 若新資料有出現,則表示是 Update 的問題. 這時你要在資料寫入後加入一些程式. ADOQuery_Csv->ApplyUpdates(); ADOQuery_Csv->CommitUpdates(); void __fastcall TDM1::ADOQuery_CsvUpdateRecord(TDataSet *DataSet, TUpdateKind UpdateKind, TUpdateAction &UpdateAction) { ADOQuery_Csv->UpdateObject = UpdateIndex; UpdateIndex->SetParams(UpdateKind); UpdateIndex->ExecSQL(UpdateKind); UpdateAction = uaApplied ; }
joey_yang
一般會員


發表:6
回覆:5
積分:2
註冊:2004-02-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-01 15:35:50 IP:61.59.xxx.xxx 未訂閱
引言: Dear Joey_yang, 你應該是沒有 update adoquery. 最簡單的測試方法是將 DataBase Close 後再打開. 若新資料有出現,則表示是 Update 的問題. 這時你要在資料寫入後加入一些程式. ADOQuery_Csv->ApplyUpdates(); ADOQuery_Csv->CommitUpdates(); void __fastcall TDM1::ADOQuery_CsvUpdateRecord(TDataSet *DataSet, TUpdateKind UpdateKind, TUpdateAction &UpdateAction) { ADOQuery_Csv->UpdateObject = UpdateIndex; UpdateIndex->SetParams(UpdateKind); UpdateIndex->ExecSQL(UpdateKind); UpdateAction = uaApplied ; }
可是 ApplyUpdates()和CommitUpdates(); 並非ADOQuery_Csv的函數耶.... 所以好像還是不能解決... 不好意思..能否請您說的比較詳細一點嗎? 真的很感謝!
erosme
初階會員


發表:5
回覆:44
積分:29
註冊:2002-12-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-01 22:27:55 IP:218.166.xxx.xxx 未訂閱
Dear Joey_yang, 抱歉,你說的沒錯.因為我用的是TQuery所以才有此函數. 若已經確認是更新的問題,那原因是用ADOQuery 更新資料時. 可能是直接寫入資料庫,並不會經過 ADODataSet. 所以你可以試著將 ADODataSet_Rtable->Active=false; 然後再設定為 true .這樣應可暫時解決你的問題. 但這不是最好的方法,也許其他人會有更好的方法.
joey_yang
一般會員


發表:6
回覆:5
積分:2
註冊:2004-02-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-02 16:49:10 IP:61.59.xxx.xxx 未訂閱
相當感謝您的回答,感覺上好像還是不行, 後來我透過再用一個ADOTable和DataSource的方式, 讓DBGrid去指向他們就正常了, 不過這也是變通的方法, 再次感謝erosme兄的回答, 這個問題真的還是很奇怪, 希望若有遇到類似問題的前輩, 能夠給予一些建議,謝謝大家!
erosme
初階會員


發表:5
回覆:44
積分:29
註冊:2002-12-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-02 21:26:53 IP:218.166.xxx.xxx 未訂閱
Dear Joey_yang, 你是否有特定的資料庫一定要用ADOQuery, 若可以改用TQuery,此問題則有解決的方法.
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-03-02 23:43:53 IP:203.204.xxx.xxx 未訂閱
joey_yang, 您好 只要如同erosme所說, 在ADOQuery_Csv->ExecSQL();之後, 加上ADODataSet_Rtable->Active=false; ADODataSet_Rtable->Active=true; 就可看到該Table中的所有資料, 不知您說感覺上好像還是不行 是怎麼樣不行,可否請您再描述清楚一點? ================================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之
系統時間:2024-04-29 22:25:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!