我想在Delphi中创建一种登录窗口。不幸的是,我无法让它与用户名和密码相匹配。
我有一个基本的.mdb数据库,带有Users表。在此表中,有一个用户名和密码。我希望Delphi检查数据库中的用户名和密码,如果它与编辑框中的用户名和密码匹配,它会转到下一个表单或显示一条消息,否则它什么都不做。当我输入数据库的第一行,用户名和密码值时,我获得成功,但是第二行,没有。我觉得我需要一种方法让它继续前进到第二行值并检查那些等等。目前数据库中也没有任何关系。
这是我的数据访问布局:ADOConnection - > ADOTable - >数据源
提前致谢!
答案 0 :(得分:1)
根据您的猜测,一种解决方案是按记录移动记录以检查每一个。例如:
function MatchPass(Table: TADOTable; const Name, Pass: string): Boolean;
begin
Result := False;
Table.First;
while not Table.Eof do begin
if Table.FieldByName('Username').AsString = Name then begin
Result := Table.FieldByName('Password').AsString = Pass;
Exit;
end;
Table.Next;
end;
end;
可以像:
一样调用 if MatchPass(ADOTable1, Edit1.Text, Edit2.Text) then
..
另一个解决方案是让ADOTable搜索相应的记录:
function MatchPass(Table: TADOTable; const Name, Pass: string): Boolean;
begin
Result := Table.Locate('Username;Password', VarArrayOf([Name, Pass]), []);
end;