我的实现方法是:
procedure TFLogin.Button1Click(Sender: TObject);
var
temp,temp1:String;
flag : integer; //用于判断是否通过认证的标志
begin
if ((UserId.Text = '') or (UserKey.Text = '')) then
begin
Application.MessageBox('请输入员工号和密码!','温馨提示:',MB_OK);
end
else
begin
flag := 0; //全局标志变量
ADOQuery1.Close;
ADOQuery1.SQL.clear;
ADOQuery1.SQL.Add('select * from person');
ADOQuery1.open;
while not ADOQuery1.eof do
begin
temp := ADOQuery1.FieldByName('id').asstring;
temp := trim(temp);
if temp=UserID.Text then
begin
temp1:=trim(ADOQuery1.FieldByName('passwd').AsString);
if temp1=UserKey.Text then
begin
FMain.login:=True ;
FMain.UserId := StrToInt(UserId.Text); //获取登陆名
FMain.Authority := ADOQuery1.FieldByName('authority').AsInteger; //获取权限
FLogin.Close;
flag := 1;
exit; //正确则退出登陆窗口
end //判断密码是否正确结束
else
begin
ADOQuery1.Next; //如果错误,则转到下一个数据集比较
end
end //判断用户ID和密码是否正确结束
else
begin
ADOQuery1.Next; //转到下一个数据集比较
flag := 0;
end
end; //循环结束
//判断是否密码错误,显示错误提示
if flag =0 then
begin
Application.MessageBox('用户名或密码错误!','温馨提示:',MB_OK);
FMain.UserId := 0 ;
FLogin.Close;
end