控件AdoConnection1,AdoQuery1,Button1
SQlServer数据库yt表,字段ytname是主键不能为空,不能重复.如果重复记录提交的时候会有错误提示,但是我想捕捉这个错误码,实现自己的错误提示信息,模糊的异常自定义提示,但我想分别根据不同的错误码,相对应显示不同的自定义提示,比如捕捉到关键字空值,就提示自定义空值错误,如果捕捉到类型转换错误就提示自定义类型错误。请问这些不同的错误码怎么获取,谢谢!procedure TForm1.Button1Click(Sender: TObject);
var
 i: Integer;
 strErrorList: TStrings;
 begin try
   with adoquery1 do
     begin
       sql.Clear;
       sql.Add('insert into yt (ytname) values(');
       sql.Add('''yt'''+')');
       adoquery1.ExecSQL;
     end;
   except
    begin
     listbox1.Items.Add(adoconnection1.Errors.Item[0].Description);
     listbox1.Items.Add(adoconnection1.Errors.Item[1].Source);
     listbox1.Items.Add(adoconnection1.Errors.Item[2].SQLState);
     listbox1.Items.Add(adoconnection1.Errors.Item[3].HelpFile);
    end;
 end;
end;
运行后在listbox中会显示:
违反了primary key约束'pk_yt'.不能在对象'yt'中插入重复键。
Microsoft OLE DB Provider for SQL Server
这两个提示原来是会在自动弹出窗口中显示的,现在在listbox中显示就不会再弹出,但会弹出窗口:
'项目在所需的名称或序数中未被发现'
请问这个信息怎么捕捉屏蔽?

解决方案 »

  1.   

    应该这么写吧?
         listbox1.Items.Add(adoconnection1.Errors.Item[0].Description);
         listbox1.Items.Add(adoconnection1.Errors.Item[0].Source);
         listbox1.Items.Add(adoconnection1.Errors.Item[0].SQLState);
         listbox1.Items.Add(adoconnection1.Errors.Item[0].HelpFile);
      

  2.   

    我不管listbox里显示是什么,我要屏蔽掉'项目在所需的名称或序数中未被发现'的提示窗口
      

  3.   

    我象楼主采用相同得处理方法 处理ORACLE数据库 没一点问题。。
    你咋有问题??
    SQL SRV应该是同理得 只要你有自己处理异常 就不会再引起系统得异常处理
      

  4.   

    up,一般用:
              try
                 post;
               except
                     on ex: Econverterror do
                         showmessage('数据输入有误就ok');
                  end;