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

關於更新ClientDataSet的問題

 
chinliang
一般會員


發表:16
回覆:26
積分:13
註冊:2002-06-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-07-31 15:20:05 IP:211.74.xxx.xxx 未訂閱
請教各位先進一個問題,有關於更新ClientDataSet的問題. 我的問題是這樣的,我指定一個ClientDataSet給DBGrid,比 如說裡面的資料每筆均有一序號(從1,2,3,...依次排下來) ,若使用者刪除了其中一筆,則以下的資料序號會補上來,所 以每刪除後就要更新刪除的記錄以下的記錄,程式是寫好了. 可是資料一多,在跑的時候,會一筆一筆跑,畫面會閃爍,再回 到原來刪除的那一筆(我有記錄刪除的位置),程式碼如下, 不知道能不能解決閃爍的這個問題,因為資料很多要等很久, 還是說再作異動前,先把ClientDataSet不指定給DBGrid?跑 完再指定?還是各位先進有更好的方法?請不吝指導,謝謝! procedure TEnquiryFrm.pmEnquiryMed_DeleteClick(Sender: TObject); var RemDeleteRecNo: integer; begin if not cdsEnquiryMed.IsEmpty then //刪除前判斷DataSet是否為空 begin RemDeleteRecNo := cdsEnquiryMed.RecNo; //記錄刪除的位置 cdsEnquiryMed.Delete; if not cdsEnquiryMed.IsEmpty then //刪除後判斷DataSet是否為空 begin if RemDeleteRecNo > cdsEnquiryMed.RecordCount then //如果是最後一筆則記錄刪除的位置為最末筆 RemDeleteRecNo := cdsEnquiryMed.RecordCount; cdsEnquiryMed.RecNo := RemDeleteRecNo; While not cdsEnquiryMed.Eof do //從刪除的位置開始往下執行序號重新指定 begin cdsEnquiryMed.Edit; cdsEnquiryMed.FieldValues['No'] := cdsEnquiryMed.RecNo; cdsEnquiryMed.Next; end; cdsEnquiryMed.RecNo := RemDeleteRecNo //設定目前記錄在刪除的位置 end; end; end;
阿子
站務副站長


發表:120
回覆:230
積分:201
註冊:2002-03-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-07-31 16:20:26 IP:61.221.xxx.xxx 未訂閱
試看看這樣呢?
if not cdsEnquiryMed.IsEmpty then //刪除前判斷DataSet是否為空
begin
  cdsEnquiryMed.DisableControls; 
  RemDeleteRecNo := cdsEnquiryMed.RecNo; //記錄刪除的位置
  cdsEnquiryMed.Delete;
  if not cdsEnquiryMed.IsEmpty then //刪除後判斷DataSet是否為空
  begin
    if RemDeleteRecNo > cdsEnquiryMed.RecordCount then //如果是最後一筆則記錄刪除的位置為最末筆
      RemDeleteRecNo := cdsEnquiryMed.RecordCount;
    cdsEnquiryMed.RecNo := RemDeleteRecNo;
    while not cdsEnquiryMed.Eof do //從刪除的位置開始往下執行序號重新指定
    begin
      cdsEnquiryMed.Edit;
      cdsEnquiryMed.FieldValues['No'] := cdsEnquiryMed.RecNo;
      cdsEnquiryMed.Next;
    end;
    cdsEnquiryMed.RecNo := RemDeleteRecNo //設定目前記錄在刪除的位置
  end;
 cdsEnquiryMed.EnableControls;
end;
從思考取勝一切~q
------
從思考取勝一切~q
chinliang
一般會員


發表:16
回覆:26
積分:13
註冊:2002-06-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-07-31 16:59:30 IP:211.74.xxx.xxx 未訂閱
謝謝阿子先進,果然是可以的,感謝你的指導,謝謝你! 順便問一下阿子先進,在POST這個文章時,怎樣才可以 像你一樣有縮排,我直接用複製,然後貼上可是就變成 擠在一起,謝謝!
阿子
站務副站長


發表:120
回覆:230
積分:201
註冊:2002-03-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-07-31 17:53:45 IP:61.221.xxx.xxx 未訂閱
貼上時先按上面加入Code 在將程式貼[Code]內容[code]到其中去就可以了,但要注意的是第一行一定是要說明文字不能用內含指令簡碼作開頭不然 內含指令簡碼會無效。    從思考取勝一切~q
------
從思考取勝一切~q
chinliang
一般會員


發表:16
回覆:26
積分:13
註冊:2002-06-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-08-01 11:19:26 IP:210.243.xxx.xxx 未訂閱
感謝副站長 <===恭禧恭禧! 說明,剛試了一下,果然是可 以的,再次感謝副站長熱心指 導~謝謝!
系統時間:2024-03-29 13:06:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!