Olá amigos da ActiveDelphi esse e o meu primeiro artigo aqui no site espero que seja o primeiro de muitos!
Vamos falar nesse artigo sobre Controle de Usuários com um contador de tentativas, vamos abordar a criação de uma Banco de Dados no Sql Server e de tabela usando os comandos create table e database e inserir dados com o insert into.
Primeiro vamos criar o banco de dados abra o Query Analyser e conectar ao
servidor, no meu caso e um servidor local e estou usando usuário padrão (sa).

Para criamos um banco,
na opção DB escolha o banco de dados Master e rode o script abaixo.
CREATE DATABASE Activedelphi -- criando o banco de
dados
ON
PRIMARY (NAME=ENGSOFTWARE_data,
FILENAME = 'c:\MSSQL7\DATA\Activedelphi.mdf',
SIZE = 10MB,
MAXSIZE = 15MB,
FILEGROWTH = 25%)
LOG ON
(NAME = ENGSOFTWARE_log,
FILENAME = 'c:\MSSQL7\DATA\Activedelphi.ldf',
SIZE = 4MB,
MAXSIZE = 6MB,
FILEGROWTH = 2MB)
Agora vamos criar a tabela TbSenha rodando o script abaixo.
CREATE TABLE TBSENHA
(
COD_USER int not NULL,
USUARIO varchar(15) NULL,
Senha varchar(6) NULL
)
insert into TBSENHA (COD_USER,USUARIO,Senha) values
(1,'Active','123456');
insert into TBSENHA (COD_USER,USUARIO,Senha) values (2,'Delphi','125478');
insert into TBSENHA (COD_USER,USUARIO,Senha) values (3,'Sergio','326587');
select * from tbsenha
Observe que usamos o comando insert into para inserir três registros na tabela.
Bom, uma vez criada o banco de dados, a tabela, e inserido os registros nesta,
vamos criar uma aplicação no delphi. Vamos usar a versão 7 do delphi pois é o
que eu ainda uso aqui (rs).
Crie uma nova aplicação no delphi.
Para fazer a conexão com o banco de dados, vamos usar os componentes da paleta
ADO.

Crie um datamodule
(que vou chamar de FrmDM) e adicione um ADOConnection (que vou chamar de
ADOLogin) e uma ADOQuery (que vou chamar de qrSenha).
ADOConnection:
Vamos se concetar ao banco de dados clicando na propriedade ConnectionString
+ Build + Microsft Ole DB Provider for Sql Server.

Faça a
configuração como na figura acima, depois teste a conexão, na propriedade
LoginPrompt coloque como false, e na Connected como true.
ADOQuery
Na propriedade Connection coloque ADOLogin, e na Sql digite o seguinte
comando: Select * from TbSenha.
No evento onCreate do FrmDM vamos abrir a query: “qrSenha.Open” e no onDestroy
vamos fechar: “qrSenha.Close;”

Crie um Form Principal
com o Name (FrmMenu), Position (poDesktopCenter), coloque no mesmo um statusbar
e adicione neste, dois Panel.
Criando o Form Login.
Bom, criamos um FormPrincipal e deixamos o Form1 que é criado automaticamente ao
iniciar uma aplicação (MainForm) no delphi sem utilização, pois será nosso
formulário de Login. No Form1 altere as seguintes propriedades.
| Caption |
Login... |
Nome exibido na barra de título |
| Name |
FrmLogin |
Nome do form |
| Position |
poDesktopCenter |
Posição do Form no desktop |
Deixe seu Form parecido com
esse abaixo ou melhor (rs), adicionando os componentes necessários e dando os
nomes para os mesmos.

Vamos mudar algumas
propriedades das Edits.
Edit1: Name (EdtUsuario) CharCase (ecUpperCase).
Edit2: Name (EdtSenha) PasswordChar (*).
Vamos agora declarar a variável tentativas, na seção private do FrmLogin.
private
tentativas : Smallint; {variavel usada para conta o numero de
tentativas de acesso ao sistema.}
No evento onclick no
botão Confirmar adicione a rotina abaixo.
procedure TfrmLogin.BTConfirmarClick(Sender: TObject);
begin
if (edtUsuario.Text = '') then //Verifica se o campo "usuario" foi
preenchido
begin
Messagedlg('O campo "Usuario" deve ser preenchido!',
mtInformation, [mbOk], 0);
if edtUsuario.CanFocus then
edtUsuario.SetFocus;
Exit;
end;
if (edtSenha.Text = '') then //Verifica se o campo "Senha" foi preenchido
begin
Messagedlg('O campo "Senha" deve ser preenchido!',
mtInformation, [mbOk], 0);
if edtSenha.CanFocus then
edtSenha.SetFocus;
Exit;
end;
if (frmDm.qrSenha.Locate('Usuarios',edtUsuario.Text,[])) and
(frmDm.qrSenha.FieldByname('Senha').asstring = edtSenha.Text) then
begin
//
frmMenu.StatusBar1.Panels.Items[0].Text:=edtUsuario.Text;
frmMenu.showmodal;
// ou Application.CreateForm(TfrmMenu, frmMenu) //Cria a
janela main
FrmLogin.close;
end
else //Caso o login nao seja valido entao
inc(tentativas); //Incrementa em 1 o valor da variavel
tentativas
if tentativas= 1 then
begin
MessageDlg(Format('Tentativa 1 de 3', [tentativas]), mtError,
[mbOk], 0);
if edtSenha.CanFocus then
edtUsuario.SetFocus;
end;
if tentativas= 2 then
begin
MessageDlg(Format('Tentativa 2 de 3', [tentativas]), mtError,
[mbOk], 0);
if edtSenha.CanFocus then
edtUsuario.SetFocus;
end;
if tentativas= 3 then
begin
MessageDlg(Format('O login ou senha estão errados! A
aplicação será fechada!',
[tentativas]) + #13 + 'Confira seu erro, abra e tente
novamente!', mtError, [mbOk], 0);
Application.Terminate; //Encerra a aplicação
end;
end;
No evento onclick no
botão Cancelar adicione a rotina abaixo.
procedure TfrmLogin.BTCancelarClick(Sender: TObject);
begin
Application.Terminate;
end;
Testando a Aplicação
Rode a aplicação e teste. Verás como esta funcionando perfeitamente. Se digitar
a senha errada três vezes, ele mostrará o erro e fechará a aplicação.

Se não ele abrirá
o FrmMenu e mostra o usuário logado no statusbar.
Conclusão: Esse artigo teve como finalidade apresentar desde a criação
de um banco de Dados no SQL Server até a conexão, usando os componentes da
paleta ADO, e para ilustrar todo esse processo criamos um controle de acesso com
um contador de tentativas.
Agradeço ao Kelver por
essa oportunidade e a todos os meus amigos desse brilhante Fórum que é o da
ActiveDelphi.
Qualquer duvida terei o maior prazer em responder:
sergio-project@hotmail.com
Sérgio de Castro Guedes
Analista de Sistema da
Mais Sistemas - Am, Programador Delphi Client/Server e Multicamadas, Atualmente
trabalhando com Banco de Dados Sql Server, aprendendo Firebird e Interbase.
|