E ai.. como vão?
Vou mostrar aqui um dos métodos de como funciona o login com banco de dados em delphi.
Vamos supor que eu ja tenho uma conexão. Criei um banco de dados em Access com uma tabela 'login'.
Criei uma tabela na seguinte estrutura:
Criei um DataModule e coloquei o ADOConnectio e o ADOTable la. Estou chamando o Datamodule de 'dm'.
Feita a conexão com o banco de dados (Você pode ver como é feita essa conexão com Access aqui) vamos colocar a 'mão na massa'!
Vamos criar dois formulários, o de login, e o de exibição (tela pra confirmar o login).
O formulário de login, tem a seguinte estrutura:
Vou utilizar edtUsuario para a Edit do usuario e edtSenha para a Edit da senha.
O código responsável pela verificação dos campos é o seguinte (OnClick do botão 'Entrar'):
Vale lembrar que para a utilização das opções TLocateOptions (loPartialKey ou loCaseInsensitive) é necessário declarar a uses 'DB'.
-Entendendo o Locate
tabela.Locate('campo_da_tabela', 'texto_para_procurar', [opções_de_localização]).
O que são essas opções de localização?
Podem ser usadas loCaseInsensitive e loPartialKey.
loCaseInsensitive: Diferencia maiúsculas e minusculas, exemplo: Nome é diferente de NOME que é diferente de NoMe.
loPartialKey: Pode localizar partes de registros, exemplo: 'Progr' pode ser 'Programa' que pode ser 'Programador'.
Agora basta criar um outro Form com um Label, responsável por dar boas vindas ao usuario.
Altere o nome para lblOla. (Olá)
Altere o evento OnShow do forumlário 2 para o seguinte código:
Basta executar e testar! Este código pode ser baixado aqui.
Abraço e até a próxima!
Vou mostrar aqui um dos métodos de como funciona o login com banco de dados em delphi.
Vamos supor que eu ja tenho uma conexão. Criei um banco de dados em Access com uma tabela 'login'.
Criei uma tabela na seguinte estrutura:
Criei um DataModule e coloquei o ADOConnectio e o ADOTable la. Estou chamando o Datamodule de 'dm'.
Feita a conexão com o banco de dados (Você pode ver como é feita essa conexão com Access aqui) vamos colocar a 'mão na massa'!
Vamos criar dois formulários, o de login, e o de exibição (tela pra confirmar o login).
O formulário de login, tem a seguinte estrutura:
Vou utilizar edtUsuario para a Edit do usuario e edtSenha para a Edit da senha.
O código responsável pela verificação dos campos é o seguinte (OnClick do botão 'Entrar'):
procedure TForm1.Button1Click(Sender: TObject); begin // ativa a tabela dm.tb_login.Open; // verifica se os campos coincidem, // tanto na tabela, quanto nas edits if dm.tb_login.Locate('usuario', edtUsuario.Text, [loCaseInsensitive ]) and dm.tb_login.Locate('senha', edtSenha.Text, [loCaseInsensitive ]) then begin // fecha a tabela dm.tb_login.Close(); // mostra outro form Form2.Show; // esconde o atual Self.Hide; end // se os campos forem vazios else if (edtUsuario.Text = '') and (edtSenha.Text= '') then begin // mostra mensagem ShowMessage('Preencha os campos login e senha!'); edtUsuario.SetFocus; end else // campos nao conferem begin // campos nao conferem ShowMessage('Usuario ou senha inválidos!'); edtUsuario.Clear; edtSenha.Clear; end; end;
Vale lembrar que para a utilização das opções TLocateOptions (loPartialKey ou loCaseInsensitive) é necessário declarar a uses 'DB'.
-Entendendo o Locate
tabela.Locate('campo_da_tabela', 'texto_para_procurar', [opções_de_localização]).
O que são essas opções de localização?
Podem ser usadas loCaseInsensitive e loPartialKey.
loCaseInsensitive: Diferencia maiúsculas e minusculas, exemplo: Nome é diferente de NOME que é diferente de NoMe.
loPartialKey: Pode localizar partes de registros, exemplo: 'Progr' pode ser 'Programa' que pode ser 'Programador'.
Agora basta criar um outro Form com um Label, responsável por dar boas vindas ao usuario.
Altere o nome para lblOla. (Olá)
Altere o evento OnShow do forumlário 2 para o seguinte código:
// mostra o nome do usuario logado lblOla.Caption := 'Olá ' + Form1.edtUsuario.Text;
Abraço e até a próxima!
aqui estou com problema na parte do
ResponderExcluirif dm.tb_login.Locate('usuario', edtUsuario.Text, [loCaseInsensitive ])
and
dm.tb_login.Locate('senha', edtSenha.Text, [loCaseInsensitive ]) then
Olá, em qual linha o erro ocorre?
ResponderExcluirLembrando que 'dm' é o nome do DataModule e 'tb_login' é o nome do ADOTable que está no DataModule.
Abraço
Olá Programador!
ResponderExcluirComo faço pra desabilirar os menus, de acordo com o grupo de usuários?
Muito bom programador vc conhece muito
ResponderExcluirsim e quando for mais de 5 usuariaos por exemplo ele so reconhece o primeiro ????????????
ResponderExcluirtá, aqui tem uma página de login mas, como seria feita a pagina de registro? que tal um tutorial sobre?
ResponderExcluironde foi que o adoconnection funcionau no projeto?
ResponderExcluirTudo bem, seu está correto mas bom lembrar que para criar m login deste temos que ter primeiro a tabela de cadastro de usuário a onde será criado a o usuário e senha, ok.
ResponderExcluirPara quem quiser trabalhar com os componentes do da aba "interbase" usando uma Query.
O código ficaria assim.
{procedure TForm_Login.BtnLogarClick(Sender: TObject);
begin
BtnLogar.Tag:=BtnLogar.Tag + 1;
With DmDados.IBQLogin Do
Begin
Close;
Sql.Clear;
Sql.Add('SELECT * FROM tab_usuario');
Sql.Add('Where login =:log AND senha =:Pass');
ParamByName('Log').AsString:= EdtUsuario.Text;
ParamByName('Pass').AsString:= EdtSenha.Text;
open;
IF Dmdados.IBQLogin.IsEmpty Then
Begin
MessageDlg('Usuário ou senha inexistente',MtError,[MbOk],0);
EdtUsuario.Text:='';
EdtSenha.Text:='';
EdtUsuario.SetFocus;
end
else
Begin
Form_Login.Close;
Frm_Principal.Show;
end;
IF BtnLogar.Tag = 3 THen
Application.Terminate;
end;
end;}
É mais trabalhoso, mas é uma pesquisa completa que pode ser adaptada para outras pesquisa.
Comigo deu certinho!
ResponderExcluirMuito obrigado era justamente o que eu buscava!
Seu exemplo ainda esta ON para quem quiser baixar e estudar!
Obrigado!
Muito bem explicado e simples de aplicar. Valeuuu
ResponderExcluirvaleu cara, ajudou baste!!!
ResponderExcluirComo faço com um banco de dados em mysql?
ResponderExcluirComo faço com um banco de dados em mysql?
ResponderExcluirO meu funcionou teoricamente. Ele verifica o login e senha mas se existirem em qualquer registro o form principal abre. Não está amarrando o usuario e senha do mesmo registro.
ResponderExcluirBoa Tarde
ResponderExcluirO exemplo funcionou parcialmente pra mim,
Faz a verificação no banco, mas se houver o usuario e senha em qualquer registro valida o login.
Ex: Registro 1: Usuario = Daniel - Senha = 123456
Registro 2: Usuario = Ana - Senha = 123
Se digito usuario de um registro e senha de outro o login é aceito.
Como resolver?
blz, só que esta reconhecendo somente 1º registro da tabela...2º em diante não abre. O que eu faço?
ResponderExcluiro meu esta dando erro aqui dm.tb_login.Locate('usuario', edtUsuario.Text, [loCaseInsensitive ])
ResponderExcluirEste comentário foi removido pelo autor.
ResponderExcluirEste comentário foi removido pelo autor.
ResponderExcluirboa noite pessoal. me ajudem se poderem por favor. criei uma tabela de login
ResponderExcluirno delphi 7. esta programada que quando a senha for digitada errada pela 1 vez aparece a mensagem você errou a senha e tem mais uma chance. mas mesmo assim errada entra na tela principal. e se fosse digitada a 2 vez
era pra fechar mas nao aparece pra digitar a senha e estando errada e pra fechar o sistema. aqui esta o algoritimo
unit ULogin;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, db;
type
TfrmUsuario = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
procedure Edit1Exit(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
tentou :integer;
{ Private declarations }
public
{ Public declarations }
end;
var
frmUsuario: TfrmUsuario;
implementation
uses Udm_dados;
{$R *.dfm}
procedure TfrmUsuario.Edit1Exit(Sender: TObject);
begin
if not (dm_dados.tbl_usuario.Locate('usu_login',Edit1.Text,
[lopartialkey,locaseinsensitive])) then
begin
showmessage('login inexistente');
edit1.SetFocus;
end;
end;
procedure TfrmUsuario.FormShow(Sender: TObject);
begin
dm_dados.tbl_usuario.Open;
tentou:=0;
end;
procedure TfrmUsuario.Button1Click(Sender: TObject);
begin
if edit2.Text = dm_dados.tbl_usuarioUSU_SENHA.Value then
showmessage('Ola '+dm_dados.tbl_usuarioUSU_NOME.value+', Bem vindo ao Sistema, bom trabalho')
else
begin
inc(tentou); // e o mesmo que tentou:=tentou+1;
if tentou = 1 then
showmessage('Você errou a senha, voce tem mais uma chance pra acessar o sistema')
else
begin
showmessage('Você errou a senha, voce nao tem permissao pra acessar o sistema!');
close;
end;
end;
end;
end.
Não sei se ainda está funcionando este site,mas tenho uma dúvida. Como criar um exibir registros somente do usuário logado?
ResponderExcluir