dbExpress的使用求教 |
答題得分者是:Rain
|
xsh123
一般會員 發表:12 回覆:18 積分:6 註冊:2003-08-04 發送簡訊給我 |
用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 發送簡訊給我 |
如果您的資料庫中有設置自增欄位的話,那麼很可能會導致這種錯誤,如果是這種情況的話比較徹底的解決方法是不要設自增,另一種選擇可試試在欄位的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 發送簡訊給我 |
|
xsh123
一般會員 發表:12 回覆:18 積分:6 註冊:2003-08-04 發送簡訊給我 |
|
richcomp
中階會員 發表:18 回覆:66 積分:51 註冊:2002-10-18 發送簡訊給我 |
|
bcshahuo
一般會員 發表:28 回覆:28 積分:11 註冊:2005-01-25 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |