3

我想在 Delphi 中创建一种登录窗口。不幸的是,我无法让它匹配用户名和密码。

我有一个基本的 .mdb 数据库,带有一个用户表。在此表中,有一个用户名和密码。我希望 Delphi 检查数据库中的用户名和密码,如果它与编辑框中的用户名和密码匹配,它会转到下一个表单或显示一条消息,否则它什么也不做。当我输入数据库的第一行,用户名和密码值时,我得到了成功,但是第二行,什么都没有。我觉得我需要一种方法让它移动到第二行值并检查这些值等等。数据库中目前也没有任何关系。

这是我的数据访问布局:ADOConnection -> ADOTable -> DataSource

提前致谢!

4

1 回答 1

2

根据您的猜测,一种解决方案可以是逐条移动记录以检查每个记录。例子:

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;
于 2012-07-13T23:47:28.303 回答