Client/Server架構如何實現?? |
答題得分者是:Justmade
|
darnell
版主 發表:25 回覆:103 積分:145 註冊:2003-03-04 發送簡訊給我 |
最近一直被一個問題所困擾,就是如何在Client/Server的架構中可以類似ClientDataSet物件的功能將資料抓到Client端然後離線,等全改完在一次更新回資料庫...我找的資料目前是用ClientDataSet來做...可是我將ClientDataSet.ProviderName-->TDataSetProvider-->TADoDataSet都設好了卻出現"missing data Provider or data packeg"的錯誤我該如何解決呢?? 我在想是不是ClientDataSet是用在三層架構的所以沒辦法使用?但是我找了很多資料都只有提到3-tier怎麼作卻都沒有看到Client/Server怎麼作??誰可以告訴我要怎麼作ㄋ??拜託幫幫忙!!Thanks ===^^===
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
你的 ClientDataSet 及 DataSetProvider 是否在不同 unit 呢? 若是的話,而裝著 CDS 的 unit create 時裝 DSP 又不在的話, CDS.ProviderName 很可能會被自動取消,即使你之後 create 了那個 Form 也不會自動連結了。你可以在 open / executeSQL 之前重新設定 provider。 另外 TClientDataSet 配合 BDE / dbExpress 使用比配合 ADO 好,因為 Delphi 3-5 時 TClientDataSet (in MIDAS) 是以配合 BDE/SQLLink 來開發的,而在 Delphi 7 時 TClientDataSet (in DataSnap) 是配合 dbExpress 來改進的。
|
darnell
版主 發表:25 回覆:103 積分:145 註冊:2003-03-04 發送簡訊給我 |
引言: 你的 ClientDataSet 及 DataSetProvider 是否在不同 unit 呢? 若是的話,而裝著 CDS 的 unit create 時裝 DSP 又不在的話, CDS.ProviderName 很可能會被自動取消,即使你之後 create 了那個 Form 也不會自動連結了。你可以在 open / executeSQL 之前重新設定 provider。 另外 TClientDataSet 配合 BDE / dbExpress 使用比配合 ADO 好,因為 Delphi 3-5 時 TClientDataSet (in MIDAS) 是以配合 BDE/SQLLink 來開發的,而在 Delphi 7 時 TClientDataSet (in DataSnap) 是配合 dbExpress 來改進的。不好意思我忘了貼程式碼...這樣你看了可能比較了解我的意思... var Form1: TForm1; adoPro:TProvider; adoDataSet:TAdodataset; adoClient:TClientDataSet; adoProvider:TDataSetProvider; procedure TForm1.Button2Click(Sender: TObject); begin adodataset:=TAdodataset.Create(self); adoClient:=TClientDataSet.Create(self); adoProvider:=TDataSetProvider.Create(self); adodataset.ConnectionString:='Provider=SQLOLEDB.1;Password=ooioioio;Persist Security Info=True;User ID=sa;Initial Catalog=GGGabc;Data Source=NTSERVER'; adodataset.CommandType:=cmdText; adodataset.CommandText:='select * from world'; adoProvider.DataSet:=adoDataSet; adoClient.ProviderName:='adoProvider'; adoClient.Active:=True; DataSource2.DataSet:=adoDataSet; end; 我主要是希望可以在把資料抓到Client端的記憶體執行然後可以離線作業...完成後再把資料傳回Server的DataBase更新...我不知道除了ClientDataSet物件還有什麼辦法可以做得到...用ADODataSet可以嗎?? 謝謝你的回答 ===^^=== 發表人 - darnell 於 2003/03/18 14:00:09 發表人 - darnell 於 2003/03/18 14:02:11 |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
darnell
版主 發表:25 回覆:103 積分:145 註冊:2003-03-04 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
除了 TClientDataSet 就是 TSimpleDataSet ,那是 TClientDataSet 的變種,內含了 TConnection, TSQLDataSet, TDataSetProvider ,其實只是4個元件習合在一起。 這兩個元件內建 Data (儲存數據) 及 Delta (儲存異動),Delta 尤其重要因為就是這個 porperty 讓他可以斷線後重新連線更新時提供所有異動給TDataSetProvider 去自動產生 Update / insert / delete SQL 來執行異動資料的。 順帶一提,Delta 也提供 TClientDataSet Undo 的功能喔。 其他元件沒有這個 porperty 應不可斷線再連線罷。
|
darnell
版主 發表:25 回覆:103 積分:145 註冊:2003-03-04 發送簡訊給我 |
引言: 除了 TClientDataSet 就是 TSimpleDataSet ,那是 TClientDataSet 的變種,內含了 TConnection, TSQLDataSet, TDataSetProvider ,其實只是4個元件習合在一起。 這兩個元件內建 Data (儲存數據) 及 Delta (儲存異動),Delta 尤其重要因為就是這個 porperty 讓他可以斷線後重新連線更新時提供所有異動給TDataSetProvider 去自動產生 Update / insert / delete SQL 來執行異動資料的。 順帶一提,Delta 也提供 TClientDataSet Undo 的功能喔。 其他元件沒有這個 porperty 應不可斷線再連線罷。> ===^^=== |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |