如何防止输入同样的编号到数据库中(30分)

如何防止输入同样的编号到数据库中(30分) Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiDB/html/delphi_20061220141428200.html
我在面板上放置了Edit1.Text,Edit2.Text.用来输入数据到数据库中.  
  其中Edit1.Text用来输入产品编号.Edit2.Text用来输入产品信息.要如何防止Edit1.Text输入同样的编号到数据库中?  
  例如:Edit1.Text输入的数据在添加到数据库中是,系统提示有重复编号.否则成功将Edit1.Text和Edit2.Text的内容输入到数据库中.  
   
  谢谢大家提供方法!!!!

建立唯一索引。

谢谢楼上的.还有别的方法吗?  
 

用自动编号,或自动生成.像你这种就插入的时候select一下数据库存看有没有值相同的

在update前,查一下数据库里面有没有相同的编号,有就提示一下。

查数据库最好,因为既然要用户来输,一般就不会是自编号.我一直用这样办法,先查数据库,如果有相同的,showmessage();没有,update  
 

把编号设置为主键  
  想输都输不进去

数据库设主键.程序中用插入或更新之前查询一下数据库中有没有这一产品编号了,有就提示后exit,没有就允许操作.

进错地方了,抽自己一下

谢谢大家!!!  
   
  语句具体什么写?

select   *   from   表   where   编号='''+Edit1.Text+'''  
  if   not   eof   then  
  showmessage('编号已存在')  
  else  
  .....  
   
  给点分我吧,我也有问题要问,没有分了,惨~

建主键是最实际的办法,否则太多麻烦,因为  
   
  1、发现重复值后,你到底是如何处理?改另外一个号还是更新数据?  
  2、同理,如果存在更新问题,那么这个时候判断数据库有重复值将更加罗嗦。

楼上的楼上正解

Hank(星星农场)   (   )   信誉:115         Blog     2006-12-22   12:58:59     得分:   0      
     
     
        建主键是最实际的办法,否则太多麻烦,因为  
   
  1、发现重复值后,你到底是如何处理?改另外一个号还是更新数据?  
  2、同理,如果存在更新问题,那么这个时候判断数据库有重复值将更加罗嗦。  
       
     
   
   
  谢谢!!!  
   
  才插入数据后,发现有重复的,showmessage('编号已存在')。不需要革新新的数据。要求用户重新编号,只到无重复为止。  
 

取得edit的值去数据库查下  
  with   adoquery   do  
  begin  
  close;  
  sql.clear;  
  sql.add('select   *   from   表   where   编号='''+Edit1.Text+''');  
  open;  
  if   not   eof   then  
  showmessage('编号已存在')  
  else  
   
 

delphi   学习群:31469235  
  加入请注明   csdn   字样  
  让我们共同提高  
   
  由于刚刚创立,请大家踊跃参加。

帮帮我~~~~~~~

帮帮我~~~~~~~

实现的方法很多,楼主为什么就不自己动动手,尝试着按照别人说的做一下看看结果是什么样的。。。。。

一般来说有三种方法  
  1在数据库的相应的字段上建立唯一约束  
   
  2在数据库的相应的字段上建立主键  
   
  3自己去检索是不是已经存在  
 

十分佩服楼主

谢谢大家,  
   
   
  with   adoquery   do  
  begin  
  close;  
  sql.clear;  
  sql.add('select   *   from   表   where   编号='''+Edit1.Text+''');  
  open;  
  if   not   eof   then  
  showmessage('编号已存在')  
  else  
   
  下面怎么写?

else  
      beign  
          sql.clear;  
          sql.text:='insert   into   表(编号,信息)   VALUES     ('''+Edit1.Text+''','''+Edit2.Text+''')';  
          ExecSQL;  
   
      end;

else  
      beign  
          close;  
          sql.text:='insert   into   表(编号,信息)   VALUES     ('''+Edit1.Text+''','''+Edit2.Text+''')';  
          ExecSQL;  
   
      end;  
 

真是晕,自己在网上一搜一筐。

posted on 2008-12-11 10:07  delphi2007  阅读(235)  评论(0编辑  收藏  举报