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

dbExpress的使用求教

答題得分者是:Rain
xsh123
一般會員


發表:12
回覆:18
積分:6
註冊:2003-08-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-04 16:19:49 IP:61.132.xxx.xxx 未訂閱
用DBEXPREE时,如果数据集中一条数据已经修改,并且已经ApplyUpdates,而另一台终端也修改了同一条数据,就会报一个HandleReconcileError窗体,但是选择修改数据却没有用,数据库不更新,为什么? 程序如下: procedure TForm1.Button1Click(Sender: TObject); var TD: TTransactionDesc; begin if not SQLConnection1.InTransaction then begin TD.TransactionID := 1; TD.IsolationLevel := xilREADCOMMITTED; SQLConnection1.StartTransaction(TD); try SimpleDataSet1.ApplyUpdates(0); sqlconnection1.Commit(td); except SQLConnection1.Rollback(TD); end; end; end; procedure TForm1.SimpleDataSet1ReconcileError( DataSet: TCustomClientDataSet; E: EReconcileError; UpdateKind: TUpdateKind; var Action: TReconcileAction); begin Action := HandleReconcileError(DataSet, UpdateKind, E); end; 为什么另一客户端修改了没有用? HandleReconcileError窗口报的错误信息 Record not found or changed by another user 我选择Reconcile action中的Correct但是数据不会有任何改变,仍然不会回写数据库. 有什么办法,急急急
Rain
資深會員


發表:31
回覆:236
積分:268
註冊:2003-02-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-04 16:57:22 IP:220.160.xxx.xxx 未訂閱
如果您的資料庫中有設置自增欄位的話,那麼很可能會導致這種錯誤,如果是這種情況的話比較徹底的解決方法是不要設自增,另一種選擇可試試在欄位的ProviderFlags屬性中加入pfInKey,例如可在SimpleDataSet的BeforeApplyUpdates事件中加入代碼:
var
  I: Integer;
begin
  with Sender as TSimpleDataSet do
  begin
    for I := 0 to FieldCount-1 do
    begin
      with Fields[I] do
      begin
        if (pfInWhere in Providerflags) then
          ProviderFlags := ProviderFlags   [pfInKey];
      end;
    end;
  end;
end;
xsh123
一般會員


發表:12
回覆:18
積分:6
註冊:2003-08-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-05 08:53:19 IP:61.132.xxx.xxx 未訂閱
to Rain: 谢谢您的指点. 第一,我資料庫中没有設置自增欄位. 第二,我将欄位的ProviderFlags屬性加入pfInKey,并加入BeforeApplyUpdates事件. 但是我仍然没有成功! 还有没有其它什么原因?或者需要设置的地方?急切期待中,肯请各位有经验的大大指点一二.
xsh123
一般會員


發表:12
回覆:18
積分:6
註冊:2003-08-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-06 14:18:55 IP:61.132.xxx.xxx 未訂閱
肯请前辈们出来指点一二.
richcomp
中階會員


發表:18
回覆:66
積分:51
註冊:2002-10-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-05 11:29:46 IP:221.224.xxx.xxx 未訂閱
DataSetProvider1--updatemode--upWhereKeyOnly 關鍵欄位clientdataset1--providerflags--pfinkey--true
bcshahuo
一般會員


發表:28
回覆:28
積分:11
註冊:2005-01-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-04-28 15:02:59 IP:211.23.xxx.xxx 未訂閱
我也有同樣的經驗耶~~~ 之前出現這個錯誤訊息,就像上面各位大大講的, key值沒設。so 我前端和後端檢查一下,就解決了。 第二次出現,也就是剛剛@@ 發現,原來是我"觸發"事件有寫錯。 也是一樣會出現同樣的錯誤訊息,供參考^^
系統時間:2017-10-17 19:30:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!