try …… //插入的操作 except On EDatabaseError do do begin showmessage(‘The inserted record is exist’); Dataset1.Cancel; End; end;如果是想在onposterror的话,可以这样写: procedure TForm1.ADOTable1PostError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction); begin showmessage(E.Message); DataSet.Cancel; Action := daFail; end;
onposterror中试试 var adoerrors: errors; adoerror: error; errorno:integer; begin errorno:=0; adoerrors:=adoCnt.Errors; adoerror:=adoerrors.Item[0]; errorno:=adoerror.number; showmessage(inttostr(errorno)) ; case errorno of -2147467259 : begin application.MessageBox('编码不能重复!','错误',mb_ok); abort; end; else begin application.MessageBox('保存失败!','错误',mb_ok); abort; end; end; //end case
2.通过
try
do...
except
showmessage('error');
end;3.没有好的办法。
try
……
//插入的操作
except
On EDatabaseError do do
begin
showmessage(‘The inserted record is exist’);
Dataset1.Cancel;
End;
end;如果是想在onposterror的话,可以这样写:
procedure TForm1.ADOTable1PostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
showmessage(E.Message);
DataSet.Cancel;
Action := daFail;
end;
adoerror: error;
errorno:integer;
begin
errorno:=0;
adoerrors:=adoCnt.Errors;
adoerror:=adoerrors.Item[0];
errorno:=adoerror.number;
showmessage(inttostr(errorno)) ;
case errorno of
-2147467259 :
begin
application.MessageBox('编码不能重复!','错误',mb_ok);
abort;
end; else
begin
application.MessageBox('保存失败!','错误',mb_ok);
abort;
end;
end; //end case