var errid : integer; with adoquery1 do begin ....................... sql.add(select @@Error as errid); Open; errid := fieldByName('errid').asinteger; end;
又来晚了,可惜我也只知道MS——SQL的,不知道O的是不是也是这个
To Popmailzjw:不晚不晚,说说你的方法吧。谢谢了!
在beforePost之前检查是否有重复记录!
if Querysyh.Locate('syh',syh,[]) then begin MsgDlgEx('索引号已存在,请重新输入!',mtInformation,[mbOk],0); Exit; end;
to lyguo(初学者): 方法不错,但在一个很大的数据库中不值得提倡。
try 你的insert语句 except on E:exception do begin showmessage('错误原因:'+E.message); end; end;
可以直接在保存的sql语句中处理 declare @id bigint select @id=id from table where id=@id if @id is not null set @id=@id+1insert table(id)values(@id)有点浪费系统开销
sql server插入重复的错误号是2601
with adoquery1 do
begin
.......................
sql.add(select @@Error as errid);
Open;
errid := fieldByName('errid').asinteger;
end;
begin
MsgDlgEx('索引号已存在,请重新输入!',mtInformation,[mbOk],0);
Exit;
end;
你的insert语句
except on E:exception do
begin
showmessage('错误原因:'+E.message);
end;
end;
declare @id bigint
select @id=id from table where id=@id
if @id is not null
set @id=@id+1insert table(id)values(@id)有点浪费系统开销