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

動態產生ClientDataSet的問題

答題得分者是:pcplayer99
ycl2005
一般會員


發表:15
回覆:14
積分:5
註冊:2005-10-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-03-25 15:51:41 IP:211.21.xxx.xxx 訂閱
如圖: 

按 查詢 時, 會動態產生一個查詢結果, 查詢結果1, 查詢結果2, 查詢結果3,的資料都不同,
但是輸出時, 不管選那一個查詢結果, 都只會輸入最後一個的查詢結果,

[code delphi]
//按查詢時
ts1:= TTabSheet.Create(self);
ts1.Caption := '查詢結果' IntToStr(PageControl1.PageCount) ;
ts1.PageControl := PageControl1;
PageControl1.ActivePageIndex:=PageControl1.PageCount-1;
myCDS:= TClientDataSet.Create(self);
myDS:=TDataSource.Create(self);
myDS.DataSet:=myCDS;
dbgrid1:= TDBGrid.Create(self);
dbgrid1.Parent := ts1;
dbgrid1.Align :=alClient;
dbgrid1.DataSource:= myDS;

[/code]


[code delphi]
//輸出時
with myCDS do begin
First;
while not Eof do begin

for j:=0 to iCount do begin
v.Cells[i,j 1].Value:='''' FieldByName( dbgrid1.Columns[j].FieldName ).AsString;
end;
i:=i 1;
Next;
end; //while not Eof do begin
[/code]

原因是myCDS裡面的資料都是最後一次的查詢結果, 但Dbgrid1裡面可看到三次不同結果,
所以想把程式改成抓dbgrid1裡面的資料輸出, 但我不知道要如何指定抓那一個查詢結果裡面的dbgrid1.
以上請各位先進指點, 謝謝.


附加檔案:49c9e28cec83b_phone.jpg
pcplayer99
尊榮會員


發表:142
回覆:738
積分:591
註冊:2003-01-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-03-29 14:20:16 IP:121.15.xxx.xxx 訂閱
你的不同的 ClientDataSet 的 Data 是怎么来的?如果获得DATA 的方法相同,当然里面的结果相同。

假设你的 ClientDataSet 都是通过同一个 DataSetProvider 去链接的同一个 DataSet 比如 Query, ADODataSet 或者 ADOQuery ,然后又没有给不同的 Params,那么,获得的 Data 肯定是相同的了。

要获得不同的 Data,办法很多。比如修改不同的 CommandText 为不同的 Select 语句;比如采用相同的带 Param 的语句,每次动态 Create 的 ClientDataSet 打开之前采用不同的 Param,又比如一个 ClientDataSet 已经有 Data 了,其它动态 Create 的 ClientDataSet 只需要通过 CloneCursr 的方式得到那个 ClientDataSet 的 Data 然后采用不同的 Filter 来显示不同的 Data
系統時間:2017-10-19 4:11:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!