我在数据库定义了一个字段ID为主键
则我在Delphi应用程序中来添加此字段ID的值为(0002),如果我再添加一个(0002)的值,则会出现错误,此错误应怎样解决,来向用户提示此字段ID为主键不能重复?我采用的try....E:edatabaseerror except....
可是得不出结果。
请各位高手指点一下。

解决方案 »

  1.   

    用try...except就可以,不过你必须编译后运行exe文件,才会按照你的处理方式处理如果你想要数据库里的ID字段可以重复,那就把关键字取消就可以了
      

  2.   

    你在保存的时候去数据库中查找,如果是Insert状态,查找库中有没有该ID,如果是Edit状态,要先纪录下来原来的ID,判断一下有没有修改过ID,有的话,查找库中有没有该ID。
      

  3.   

    如果用ADO,可以在异常中返回数据库的错误码,比如SQLServer的主键重复是2627。
    然后在转换成自己的错误提示即可。
      

  4.   

    try
      Adoconnection.execute(sqlString);
    except
      raise Exception.Create(intToStr(Adoconnection.Errors.Item[0].NativeError));
    end
    在上层捕获错误
    tryexcept
     on e:exception do
     case strtoint(e.message) of
      2627:
          showmessage('主键错误');
     end;
    end;
    未编译,大概是这个意思
      

  5.   

    赞同joky1981的观点
    可执行文件才可以正常显示异常
    将eastphoenix的代码编写成一个Bool函数
    注意在出现异常的地方加入跳出语句在你提交的时候调用这个Bool函数判断输入是否合理
      

  6.   

    在提交时可以写一些代码来控制的!
    在确保其他无误的情况下如果提交错误,就可以判定主键重复!
    如:
      if clientdataset.ApplyUpdates(-1)>0 then
      begin  
        showmessage('该ID已经存在');
        clientdataset.CancelUpdates
      end;
      

  7.   

    修改主键为 guid,保证唯一,不单你的表,整个系统,全世界(理论上)也唯一……
      

  8.   

    就用..recordcount<>0  then
    .....不就可以了吗!!!