全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1062
推到 Plurk!
推到 Facebook!

ClientDataSet 的資料無法更新

尚未結案
yedda
一般會員


發表:13
回覆:27
積分:8
註冊:2002-07-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-03 21:05:53 IP:202.181.xxx.xxx 未訂閱
Server 端有一支 Server Engine ,Client端藉由迴圈動態傳入單位代號,抓取每一單位的資料,並將資料塞回ClientDataSet作後續的處理,結果發現迴圈跑到第二次以後,不管傳入的參數為何,資料都殘留第一批的資料,無法更新,部分程式如下: for i:=0 to sDiv.Count -1 do begin cdsMain.close; cdsMain.Params[0].Value := strDiv[i] ;//傳入參數抓取資料 cdsMain.ProviderName := 'dspPmatdMain'; cdsMain.open; //無論參數值為何,cdsMain的筆數都一模一樣 end; ~ 煩請協助幫忙 ~
pgdennis
資深會員


發表:41
回覆:526
積分:443
註冊:2002-05-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-03 23:51:22 IP:210.244.xxx.xxx 未訂閱
clientdata執行close應該會清空阿,你可以用SQL monitor看看cdsMain.open 時所產生的SQL對不對 永遠追不上技術更新的速度
------
星期一,二...無窮迴圈@@
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-04 08:30:43 IP:210.65.xxx.xxx 未訂閱
Hi:    
for i:=0 to sDiv.Count -1 do 
    begin
        cdsMain.close;
        cdsMain.ProviderName := 'dspPmatdMain';
        cdsMain.Params[0].Value := strDiv[i] ;//傳入參數抓取資料
        cdsMain.open; //無論參數值為何,cdsMain的筆數都一模一樣
    end;
似乎應該修正如紅色部分,先指定 ProviderName 再傳參數 -------------------------------- 小弟才疏學淺,若有謬誤請不吝指教 --------------------------------
------
Fishman
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-05 20:36:51 IP:211.20.xxx.xxx 未訂閱
不知以下程式碼是不是你要的 若不是的話,你需要將程式碼範圍放大一點貼上來。    
for i:=0 to sDiv.Count -1 do 
begin
  cdsMain.close;
  cdsMain.Params[0].Value := strDiv[i] ;//傳入參數抓取資料
  cdsMain.ProviderName := 'dspPmatdMain';
  cdsMain.open; //無論參數值為何,cdsMain的筆數都一模一樣
  // 將抓取到的資料修改 程式碼放在此

  cdsMain.Edit;
  cdsMain.FieldByname('XXXXX').AsString :=  'xxxx' ;
  ........
  cdsMain.Post;
  If cdsMain.ChangeCount >0 Then 
    cdsMain.ApplyUpdates(-1);    end;
// 程式到此 永遠只有最後一次取到的資料
// 前面幾次取到的資料已被For迴圈內的cdsMain.Close;關閉了    
發表人 - chance36 於 2004/02/05 20:37:51
系統時間:2024-06-29 20:30:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!