Login com BD Access
tenho sistema de cadastro com ADOConnection e ADOQuery e tenho uma tela de login ligada ao BD de usuarios access e tenho vários usuarios cadastrados, porém só dá certo com um usuario, quando eu mudo o usuario da a msg que os dados estão incorretor.
minha tela de login tem tambem um ADOConnection e um ADOQuery com o código:
public
{ Public declarations }
login: boolean;
end;
var
frmLogin: TfrmLogin;
implementation
{$R *.dfm}
procedure TfrmLogin.FormClose(Sender: TObject; var Action: TCloseAction);
begin
{ Aqui é o seguinte, se for pedido pra fechar a aplicação, antes
ele verificará se o usuário foi logado, caso não tenha sido ele
encerrará tudo, caso tenha sido ele apenas fechará a tela de login }
if login=false then
Application.Terminate
else
frmLogin.close;
end;
procedure TfrmLogin.btnLoginClick(Sender: TObject);
begin
// Condição para verificar se os campos não estão vazios.
if (edtSenha.text<>'') and (edtUser.text<>'') then begin
// Condição que testa a igualdade dos campos senha e usuário
if (EdtSenha.text=query.FieldByName('senha').AsString) and (edtUser.text=query.FieldByName('user').AsString) then begin
frmLogin.Close; // Fechar a tela de login (então é executado o OnClose do Form);
login:=true; // Setar variável como true;
end else begin
messageBox(handle,'Usuário ou Senha Inválida','ATENÇÃO!',MB_ICONERROR+mb_OK);
edtSenha.Text:='';
edtUser.text:='';
edtUser.SetFocus;
end;
end else
messageBox(handle,'Você deve preencher o nome de usuário e senha','ATENÇÃO!',MB_ICONERROR+mb_OK);
end;
e no oncreate do form incial:
procedure TfrmInicial.FormCreate(Sender: TObject);
begin
// AQUI O FORMULÁRIO INICIAL
frmLogin := tfrmLogin.create(application);
frmLogin.showmodal;
end;
Alguem pode me ajudar a resolver esse problema.
minha tela de login tem tambem um ADOConnection e um ADOQuery com o código:
public
{ Public declarations }
login: boolean;
end;
var
frmLogin: TfrmLogin;
implementation
{$R *.dfm}
procedure TfrmLogin.FormClose(Sender: TObject; var Action: TCloseAction);
begin
{ Aqui é o seguinte, se for pedido pra fechar a aplicação, antes
ele verificará se o usuário foi logado, caso não tenha sido ele
encerrará tudo, caso tenha sido ele apenas fechará a tela de login }
if login=false then
Application.Terminate
else
frmLogin.close;
end;
procedure TfrmLogin.btnLoginClick(Sender: TObject);
begin
// Condição para verificar se os campos não estão vazios.
if (edtSenha.text<>'') and (edtUser.text<>'') then begin
// Condição que testa a igualdade dos campos senha e usuário
if (EdtSenha.text=query.FieldByName('senha').AsString) and (edtUser.text=query.FieldByName('user').AsString) then begin
frmLogin.Close; // Fechar a tela de login (então é executado o OnClose do Form);
login:=true; // Setar variável como true;
end else begin
messageBox(handle,'Usuário ou Senha Inválida','ATENÇÃO!',MB_ICONERROR+mb_OK);
edtSenha.Text:='';
edtUser.text:='';
edtUser.SetFocus;
end;
end else
messageBox(handle,'Você deve preencher o nome de usuário e senha','ATENÇÃO!',MB_ICONERROR+mb_OK);
end;
e no oncreate do form incial:
procedure TfrmInicial.FormCreate(Sender: TObject);
begin
// AQUI O FORMULÁRIO INICIAL
frmLogin := tfrmLogin.create(application);
frmLogin.showmodal;
end;
Alguem pode me ajudar a resolver esse problema.
Paulo
Curtidas 0
Respostas
Paulo Freire
21/08/2013
No btnLogin
with DM.ADOQuery_Acesso do
begin
DM.ADOQuery_Acesso.SQL.Clear;
DM.ADOQuery_Acesso.SQL.Text := 'SELECT * FROM TBL_ACESSO WHERE USUARIO =:WUSER AND SENHA =:WPASS';
DM.ADOQuery_Acesso.Parameters.ParamByName('WUSER').Value := Edit1.Text;
DM.ADOQuery_Acesso.Parameters.ParamByName('WPASS').Value := Edit2.Text;
DM.ADOQuery_Acesso.Open;
if DM.ADOQuery_Acesso.RecordCount > 0 then
begin
FrmPrincipal:=TFrmPrincipal.Create(self);
FrmPrincipal.ShowModal;
end else
begin
messagedlg('Usuário ou Senha incorreta.', mtinformation, [mbok], 0);
Edit2.SetFocus;
abort;
end
with DM.ADOQuery_Acesso do
begin
DM.ADOQuery_Acesso.SQL.Clear;
DM.ADOQuery_Acesso.SQL.Text := 'SELECT * FROM TBL_ACESSO WHERE USUARIO =:WUSER AND SENHA =:WPASS';
DM.ADOQuery_Acesso.Parameters.ParamByName('WUSER').Value := Edit1.Text;
DM.ADOQuery_Acesso.Parameters.ParamByName('WPASS').Value := Edit2.Text;
DM.ADOQuery_Acesso.Open;
if DM.ADOQuery_Acesso.RecordCount > 0 then
begin
FrmPrincipal:=TFrmPrincipal.Create(self);
FrmPrincipal.ShowModal;
end else
begin
messagedlg('Usuário ou Senha incorreta.', mtinformation, [mbok], 0);
Edit2.SetFocus;
abort;
end
GOSTEI 0