如何在try..except...end语句中判断错误,并且捕捉错误(50分)

  • 主题发起人 主题发起人 lonelyboy
  • 开始时间 开始时间
L

lonelyboy

Unregistered / Unconfirmed
GUEST, unregistred user!
代码:
       qryuseid1.Insert;
       qryuseid1.FieldByName('swapid1').asstring:=id;
       qryuseid1.FieldByName('used').asstring:='Y';
       qryuseid1.FieldByName('year1').asstring:=year;
       qryuseid1.Post;
       try
         dmmain.dbxin.ApplyUpdates([qryuseid1]);
       except
         raise;
       end;
当中字段swapid1在数据库中为主键字段,当程序运行到
dmmain.dbxin.ApplyUpdates([qryuseid1]);的时候如果
当swapid1重复的时候,程序会出现
一个错误窗口,里面用英文写着原因,
现在的问题是:我的程序如何不想让用户看到这个错位窗口,就是说如何将这个窗口不
显示出来.
 
当应用程序独立运行时(不在delphi打开的情况下),这个窗口是不显示的。
 
你先以Id条件查询表单里是否有该Id存在,如果存在就Abort;不存在插入就行了啊。
With Query1 Do
begin
close;
Sql.clear;
Sql.add('Select SwApid1 From Table_name Where Id = :id');
ParamByName('Id').asstring := id;
Open;
If Recordcount <> 0 Then
Abort;

 
try
...
except
on E:exception do if e.message='若错误信息等于这里的字符' then
showmessage(e.message);
end;
 
qryuseid1.Insert;
qryuseid1.FieldByName('swapid1').asstring:=id;
qryuseid1.FieldByName('used').asstring:='Y';
qryuseid1.FieldByName('year1').asstring:=year;
qryuseid1.Post;
try
dmmain.dbxin.ApplyUpdates([qryuseid1]);
except
//raise;这里什么都不写,就把错误信息给闷了!
end;
 
把raise去了,换成showmessage,你想写什么都可以了
 
把raise去了,换成showmessage,你想写什么都可以了
不错啊,不过在delphi环境下该窗口还是会出来,
直接运行exe旧不会了
 
同意少爷的腿
 
还有人回答吗?
 
同意mlzhou。
 
你在你的程序中查找raise.把它//掉
 

Similar threads

后退
顶部