读书人

请各位大神帮小弟我看看判断ACCESS里

发布时间: 2012-07-29 15:26:13 作者: rapoo

请各位大神帮我看看,判断ACCESS里用户名是否重复。
想实现功能:单击'添加用户'按钮,判断表里是否有相同的用户名,如果有就弹出提示阻止,如果没有就添加。
问题:为什么第一次能正确判断,但只要一有不重复用户名添加以后,重复的用户名也能添加了,起不到阻止作用了。
下面是代码,小弟刚接触编程,请各位大神帮帮忙,RZ~

Delphi(Pascal) code
procedure TUserControl.btn_AddUserNameClick(Sender: TObject);var  boolSame:Boolean;begin  //初始化  boolSame:=True;  //遍历数据库所有记录,查看是否有相同的用户名  while not DM.ADOQuery_MJ.Eof do  begin    if edt_AddUsers.Text=DM.ADOQuery_MJ.FieldByName('UserName').AsString then    begin      boolSame:=False;      Break;    end    else    begin      boolSame:=True;      DM.ADOQuery_MJ.Next;    end;  end;  if boolSame then  begin    with DM.ADOQuery_MJ do    begin      Append;      FieldByName('UserName').AsString:=edt_AddUsers.Text;      FieldByName('PassWord').AsString:=edt_AddPassWord.Text;      Post;    end;  end  else  begin    DM.MyShowMessage('用户名已存在,请重试!');  end;end;


[解决办法]
DM.ADOQuery_MJ.First;
while not DM.ADOQuery_MJ.Eof do

不过这样循环判断会很慢的,用Locate或者重新查询吧

with DM.ADOQuery_MJ do
begin
if locate('UserName',edt_AddUsers.Text,[]) then
DM.MyShowMessage('用户名已存在,请重试!')
else begin
Append;
FieldByName('UserName').AsString:=edt_AddUsers.Text;
FieldByName('PassWord').AsString:=edt_AddPassWord.Text;
Post;
end;
end;

读书人网 >.NET

热点推荐