rt
thx

解决方案 »

  1.   

    try
    dm.aqadd1.close;
    dm.aqadd1.SQL.clear;
    dm.aqadd1.SQL.add(' insert into bmcl values(:a,:b) ');
    dm.aqadd1.Parameters.ParamByName('a').Value:=Trim(edtscxid.Text);
    dm.aqadd1.Parameters.ParamByName('b').Value:=Trim(edtscxname.Text);dm.aqadd1.ExecSQL;
    except
     on e: exception do
     begin
     Application.ShowException(e);//显示是什么具体的错误,比如关键字重复等等
     exit;
    end;
    end;用try except ,可以显示是什么具体的错误,比如关键字重复等等
      

  2.   

    保存前先判断是否重复记录 :
    begin
              with adoquery2 do
              begin
                close;
                sql.Clear;
                sql.Add('select * from xm where csbm='''+code+''' and xmbm='''+sp+'''') ;
                open;
              end;
              if adoquery2.RecordCount <= 0 then
              begin
               adoquery1.Append;
               adoquery1.Fields[0].Asinteger:=pri;
               adoquery1.Fields[1].AsString:= code;
               adoquery1.Fields[2].AsString:= sp;
               adoquery1.Fields[3].AsString:=ExcelID.Cells[k+1,2].Value;
               adoquery1.Post;
               pri:=pri+1;
               end;
             end;
      

  3.   

    用try except不是很好
    可以用专门的机制来捕获
      

  4.   

    在TADOQuery的OnPostError事件中进行捕获即可。通过捕获ADOConnection.Errors.Item[I].NativeError即可
    不同数据库不一样
    譬如主键错误在SQLSERVER中是2601在ACCESS中是-105121349,具体察看数据库相关说明譬如ACCESS
    var
      I: Integer;
    begin
      for I:=0 to MainData.adcConn.Errors.Count-1 do
      begin
        case MainData.adcConn.Errors.Item[I].NativeError of
          -105121349:
            begin
              Application.MessageBox(CODE Must be one and only!',PChar(Application.Title),MB_OK+MB_ICONWARNING);
              Action:=daAbort;
            end;
        end;
      end;如果是SQLSEEVER那么把-105121349改为2601即可
      

  5.   

    Kshape([伟大的大伟!]/一心考研中!) () 
    用try  except不是很好  
    可以用专门的机制来捕获 -------------------------------------------为什么?
      

  6.   

    With DataSet1 do
    Try
      if state in [dsEdit,dsInsert] then Post;
    Except
      On E:Exception do Begin
        if e is EAbort.......   //处理错误类型,具体什么类型忘了。
        ShowMessage('嘿嘿,出错了!'+#13+E.message);
      End;
    End;
      

  7.   

    Kshape([伟大的大伟!]/一心考研中!) () 
    用try  except不是很好  
    可以用专门的机制来捕获 -------------------------------------------为什么?
    因为这种错误本质上是数据库的,应用程序从数据库引擎(ADO、ODBC、BDE等)捕获的,所以通过try except不仅不好,而且很多情况下人工根本就捕获不到。
      

  8.   

    如果不try post的话,那出现了异常怎么处理?