動態產生ClientDataSet的問題 |
答題得分者是:pcplayer99
|
ycl2005
一般會員 發表:15 回覆:14 積分:5 註冊:2005-10-01 發送簡訊給我 |
如圖:
按 查詢 時, 會動態產生一個查詢結果, 查詢結果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. 以上請各位先進指點, 謝謝. |
pcplayer99
尊榮會員 發表:146 回覆:790 積分:632 註冊:2003-01-21 發送簡訊給我 |
你的不同的 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 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |