如何检测修改SQL的重复记录值!万急啊(30分)

  • 主题发起人 主题发起人 topdelphi
  • 开始时间 开始时间
T

topdelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
我的SQL数据库有个USERID字段,如何检测例如输入编号为1之后,
再输入就弹出提示不能输入重复值提示出来,不是弹出SQL系统报错信息出来,
procedure TForm1.Button2Click(Sender: TObject);
begin
try
ad.Insert ;
ad.FieldByName('user_ids').AsString :=edit1.Text;
if ad.RecordCount =1 then
begin
beep;
showmessage('已经存在这条记录了');
ad.Cancel;
exit ;
end
else
ad.Post;
 
你是指对设了 主键 的字段吧。

我建议你最好的办法是有添加记录之前自动给一个新值。

如,你现在的记录有已有100条
你在使用Insert 的时候,就直接给这个记录值一个值为101,我就是这样用的,因为主键值
一般都用来做为标识,不需要用户直接干预!

要不然你就在输入新记录在保存之前在原记录中搜索一下。。
 
好感激你的回答,可是可以比个例子我看看嘛,因为我还是有点不明白,虽然我分数不多,
就全比你了,再次感谢你.
 
我自己有个员工库,使用了一个员工编号,这个编号是主键值,是区别员工的主要
标志(因为可能会有同姓名的员工),而编号是绝对唯一的,这在程序中很有意思。

我想这和你使用的应该差不多。。。

我添加一个新员我这样使用:

With AdoTable1 do
begin
Append; //添加一条记录
FieldbyName('编号').asSTring:=IntToSTr(RecordCount);
//上面这句则在添加一条记录后自动给这个主键值的编号设一个值,我的设为
//记录数,然后根本不允许用户修改这个编号字段,在用户输入其他字段后再post也不会
//报错。
end;

 
我的系统是订单号来的,需要订单号来区分那个产品和品名规格等信息,而且这个订单号
用户要求可修改的,我照你的方法写成这样,但是好像没有提示订单号相同,而且不知道
是否有错呢.我想你比我说的方法2的例子,就在POST之前查找一下,再弹出个提示框出来,
不能重复,请帮忙指教,谢谢
With AdoQUERY1 do
begin
Append;
FieldbyName('编号').asSTring:=IntToSTr(RecordCount);
FIELDBYNAME('品名').ASSTRING:=EDIT2.TEXT;
POST;
end;
 
后退
顶部