如何判断插入新的记录与表里原有的记录重复?急(100分)

  • 主题发起人 主题发起人 pckite
  • 开始时间 开始时间
P

pckite

Unregistered / Unconfirmed
GUEST, unregistred user!
我ACCESS表里有一个字段‘学号’,现在要添加新的记录,如果遇到学号相同则提示出错,取消
添加记录,如果与原有的都不相同,想可正常添加记录,如何实现?
 
把学号定义成主键
 
把学号设成主键就行了
关于主键看看数据库方面的书吧
 
if exists(select 学号 from 表 where 学号='想播入的学号') then
showmessage('已存在学号');
 
就把学好定义成主关键字就行了,学号一般是唯一的!
 
我试过了,按windbell的方法不行,它说exists没有定义。
如果是设主键的话,这只报文英的错误,而我是想让程序弹出框“错误:此学号已经存在!”,
谁有更详细的代码?
 
>>按windbell的方法不行,它说exists没有定义。
老哥,风铃兄只是告诉你方法,你不会真的用exists吧!
不过自已写个函数也是可以的!
 

try
except
end;
 
在access中设置学号为主键,同时将其属性设为不可重复就行了,
当用DELPHI编程时,如果录入了相同的字段,BDE将会有出错提示,
因此同时还要编写代码处理此类BDE错误,以保证程序顺利运行
 
唉!这个问题的解很多,如靠dbms自身的完整性约束或你在程序中自己判断.
你应当自己先思考当不通再提问!这样才能真正的不断提高自己的水平.
 
你可以先用select 语句查一查该学号是否存在,若存在则提示存在信息,否则插入新记录。
 
不知道为什么,我的程序是插入数据后就判断是否重复,因为是这样,所以,即使是插入原来没有的,它也会
判断说是重复的。请各位指点,谢谢了!~
最后有原代码,才好研究嘛!~
 
Query1.close;
Query1.sql.clear;
Query1.sql.add('select 学号 from tablename');
Query1.open;
if Query1.recordcount<>0 then
showmessage('记录已存在');
 
现在输入框EDIT1,
想判断输入的数据是否与字段‘学号’里的值是否相等,如果不等则插入数据,否则弹出中文提示
取消操作,如何实现?请不要答非所问!~
 
就跟 szzhb 一样,先查询,再用插入。。。
adoQuery1.close;
adoQuery1.sql.clear;
adoQuery1.sql.add('select 学号 from tablename');
adoQuery1.open;
if adoquery1.FieldByName('学号').AsString<>'' then
showmessage('记录已存在');
else
插入数据。。。。。。。
 
>>不知道为什么,我的程序是插入数据后就判断是否重复

你可以设一个循环,不取最后一条,来判断。
for i := 0 to dataset1.recordcount - 2 do
begin
if dataset1['学号'] = '你想添加的学号' then
begin
showmessage('此学号已存在');
Exit;
end else
if i < dataset1.recordcount then dataset1.next;
end;
dataset1.post;
 
你是用query还是dataset?反正大同小异。
 
>>如果是设主键的话,这只报文英的错误,而我是想让程序弹出框“错误:此学号已经存在!”,
你用try把它加工一下不就可以了吗?

或者
select 学号 from table where 学号="edit1.text"
if recordset.recordcount >0 then
messge("错误")
else
insert!
这样的办法不可以吗?
 
后退
顶部