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

[问题] clientdataset mybase filter之后修改数据的怪问题

尚未結案
wpf
一般會員


發表:11
回覆:22
積分:6
註冊:2002-04-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-30 08:55:30 IP:221.218.xxx.xxx 未訂閱
在d7中,我使用clientdataset连接本地的cds文件,在cds文件内,有一列为flag,其中我需要标记为1,或者0, 在load数据之后,如果 filtered=false,那么我从第一条到结尾,全部修改flag=1成功,并且我 filter='flag = 0' ,filtered=true 也正常, 但是,假设我预先指定部分记录的flag=0,并且使用上面的条件过滤之后,假设过滤之后有500条记录,在这500记录的基础上从头到尾依次修改flag=1, 这是从外观上就看出了奇怪的现象,我第一次执行修改flag功能,那么他修改250条记录,再执行又是一半,125,之后,总是一半, 代码应该没有问题,不存在next两次的问题,并且,没有过滤的时候的修改也是同一段代码,只是修改的标记不同而已. 苦思不得其解
jimmy_wei
高階會員


發表:9
回覆:176
積分:147
註冊:2003-08-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-30 11:01:17 IP:210.243.xxx.xxx 未訂閱
wpf 你好: 你所謂的依次修改,是不是    
while not eof do
biegn
  update....
  next;
end;
沒錯看起來你是沒有next兩次,可是你的資料是filtered過的 舉例來說好了,原本你有500筆資料,filter過可能剩250條件 是某個欄位的值為0來filter,你想想當你update第一筆0為1時 filter是不是會把這筆資料過慮掉,然後你在next結果會變成 一次跳兩筆,所以上面的寫法要改一下改成
while dataset.fieldbyname('欄位')='0' do
biegn
  update 把0的變成1
//  next;  <--不要了
end;
雖然沒有next但是因為filter所以到最後還是會跑完.... 以上是我的猜測和建議,試試....
wpf
一般會員


發表:11
回覆:22
積分:6
註冊:2002-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-30 18:49:38 IP:221.218.xxx.xxx 未訂閱
似乎是这么个道理,后天上班试验一下,如果正确了,就把分给你了 先谢谢
系統時間:2024-06-08 3:09:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!