初学者求教:如何判断输入的数据和库中的数据是否重复(50分)

  • 主题发起人 主题发起人 ef
  • 开始时间 开始时间
E

ef

Unregistered / Unconfirmed
GUEST, unregistred user!
我是个初学者,试着用Access和ADO做个东西,通过DBEdit往数据库里填数据,
问题是该怎么判断输入的数据是否和数据库中已有的数据重复。
望高手们能具体说明一下,谢谢。
 
比较主键,
再写一个sql语句 where pk= '''' + dbedit1.text + ''''
如果query.eof 为true,则没有重复记录,否则,反之
 
1、可以在提交前检测数据库内是否存在同样的数据。

2、可以设置关键字段不可重复(当然,不可重复关键字段不要设成自动增加的,要不然就无意义了)
 
可以设置关键字段不可重复
存盘出错时,截取出错消息换成自己的提示,如:
DBTables,
if EDBEngineError(E).Errors[0].ErrorCode=DBIERR_KEYVIOL then
E.Message := '学号不能重复!';
 
beforepost检测一下
select count(*) from tablename where fieldname=:fieldname
if count(*)>0 then 重复
不过你先要记录一下,看是否是修改的数据
formshow field:=dbedit.text
最后判断if field<>dbedit,再用上面的判断,挺麻烦的
 
长见识啊!
 
在数据库中设置一个主键,写程序时捕捉异常,当输入重复时,将显示信息框。
或者在程序中数据入库之前先按照某一关键字查库,看是否已经有了这一条记录。
判断没有时再执行插入语句。[:)]
 
设置主键后,如要添加数据,会自动检查的,数据不唯一会出错!
编写异常处理程序,try...except!
 
感谢大家的帮助。
还有一点问题:我的窗口中有多个DBEdit,我想在每个DBEdit输入完成后就判断是否重复,
不是等到提交的时候,SQL语句应该写在那里啊?DBEdit的OnChange里好像不行。
是不是有DBEdit失去焦点时的时间?
麻烦再指教一下。
 
DBEdit的事件中啊
 
DBEdit的Onexit事件中
 
非常感谢大家的帮助
 
将数据库中要求不可重复的字段设为主键,数据库自动监测是否重复。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
后退
顶部