to jennykiller:多谢,1、2问题解决了。第3个问题是:客户端clientdataset更新数据,如果出现更新错误(比如:记录在修改并保存回数据库前已被其他客户修改,这样数据更新时就会出现错误:找不到原记录或记录已被其他用户修改),按李维书上说的,返回的数据包应包含原记录内容、修改的内容、和现在数据库里当前记录内容。并且通过Field的OldValue、NewValue、CurValue这个三个属性就可以得相应的原记录内容、修改的内容、和现在数据库里当前记录内容。但我试了好多,CurValue值始终为空。我是在clientdataset的OnReconcileError事件中处理,代码如下:
procedure TForm1.ClientDataSet1ReconcileError(
DataSet: TCustomClientDataSet;
E: EReconcileError;
UpdateKind: TUpdateKind;
var Action: TReconcileAction);
begin
edt_OldValue.Text:=dataset.FieldByName('name').OldValue;
edt_NewValue.Text:=dataset.FieldByName('name').NewValue;
edt_CurValue.Text:=dataset.FieldByName('name').CurValue;
end;
我的程序实际是想实现:一个客户修改记录出现这样的错误时,除了能返回出错的原因,并且还能返回数据库里当前最新的记录显示在客户端界面。