TkbmMWClientQuery有一个ErrorTable属性,用于记录提交Query时返回的错误结果。当用户保存修改的业务数据,出错时,可以用ErrorTable定位出错的记录并提示错误信息。
下面是实现代码:
procedure TForm2.Button4Click(Sender: TObject);
var
i:TkbmNativeInt;//必须声明为TkbmNativeInt,不然XE3编译出错.
begin
if kbmMWClientQuery1.ErrorTable.RecordCount<=0 then Exit;//无提交错误返回
kbmMWClientQuery1.CurIndex.SearchRecordID(kbmMWClientQuery1.ErrorTable.FieldByName('KBMMW_RECORDID').AsInteger,i);//快速定位出错记录
if i<0 then raise Exception.Create('没有找到错误记录号.');
kbmMWClientQuery1.RecNo:=i+1;//需要加1才是具体的出错记录
ShowMessage(kbmMWClientQuery1.Fields[0].AsString+kbmMWClientQuery1.ErrorTable.FieldByName('KBMMW_ErrorMessage').AsString);// 显示出错记录的第一个字段+出错信息
end;
实际上,TkbmMWClientQuery的OnResolveError事件,也是在Query向服务器发出请并收到服务器的响应后,根据服务器响应的ErrorTable内容触发的。这里的方法,可完全替带Query的OnResolveError事件。