QUOTE(Churc @ 01/09/2007 - 11:11)

Opa
Mas você fez errado, você deu um SELECT *
O * (Asterisco) vai selecionar todos os campos e supostamente todos os usuários, e assim é claro,
vai retornar um número de registros maior do que 0, você tem que passar no SELECT apenas o
usuário informado...
Faz o seguinte, da uma olhada neste vídeo de como é feito uma tela de Login a nível de não
iniciar o sistema caso não há sucessso no login...
http://www.sunsetsolutions.com.br/ranilson/E então se você usar o código que lhe passei
CODE
with dtmiza do
begin
qryiza.Close;
qryiza.SQL.Clear;
qryiza.SQL.Add('SELECT Usuarios, Senha, Nivel from NOME_DA_TABELA');
qryiza.SQL.Add('WHERE Usuarios =:u');
qryiza.ParamByName('u').asString := TxtUsu.Text;
qryiza.Open;
if qryiza.RecordCount = 0 then
ShowMessage('Usuário inválido') else
if (LowerCase(TxtSen.Text) = LowerCase(qryiza.FieldbyName('Senha').asString)) then
Close else
ShowMessage('Senha inválida!');
end;
Vai funcionar perfeitamente, mas é claro você tem que adaptá-lo as suas necessidades...
abraçox
Ok, Resolvido.
Ai vai os dados:
CODE
unit FLogin;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, psvBasiclbl, psvBorderLabel, DB, pngimage,
ExtCtrls, Menus;
type
TFrmLogin = class(TForm)
txtusu: TEdit;
psvBorderLabel2: TpsvBorderLabel;
psvBorderLabel3: TpsvBorderLabel;
txtsen: TEdit;
SpbOk: TSpeedButton;
SpbCan: TSpeedButton;
Image1: TImage;
psvBorderLabel1: TpsvBorderLabel;
procedure SpbOkClick(Sender: TObject);
Procedure LeAcesso (Nivel : String);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure SpbCanClick(Sender: TObject);
private
Acessos : Integer;
Liberado : Boolean;
public
Login : Boolean;
end;
var
FrmLogin: TFrmLogin;
implementation
{$R *.dfm}
Uses Funcoes, FPrincipal;
procedure TFrmLogin.LeAcesso(Nivel: String);
var Menu : Array[1..43] of TMenuItem; // Não esquecer de colocar na clausula uses 'Menus'
i : Integer;
begin
Menu[01] := FrmPrincipal.Cadastro1;
Menu[02] := FrmPrincipal.Alunos1;
Menu[03] := FrmPrincipal.Instrutores1;
Menu[04] := FrmPrincipal.Cidades1;
Menu[05] := FrmPrincipal.Veiculos1;
Menu[06] := FrmPrincipal.Materias1;
Menu[07] := FrmPrincipal.Niveis1;
Menu[08] := FrmPrincipal.Usuarios2;
Menu[09] := FrmPrincipal.Empresa1;
Menu[10] := FrmPrincipal.Lancamentos1;
Menu[11] := FrmPrincipal.Parcelas1;
Menu[12] := FrmPrincipal.Pagar1;
Menu[13] := FrmPrincipal.Caixa3;
Menu[14] := FrmPrincipal.Exames2;
Menu[15] := FrmPrincipal.Exames1;
Menu[16] := FrmPrincipal.Agendamentos1;
Menu[17] := FrmPrincipal.Teoricas1;
Menu[18] := FrmPrincipal.Praticas1;
Menu[19] := FrmPrincipal.Relatorios;
Menu[20] := FrmPrincipal.Matricula1;
Menu[21] := FrmPrincipal.Moto1;
Menu[22] := FrmPrincipal.Carro1;
Menu[23] := FrmPrincipal.Caminhao1;
Menu[24] := FrmPrincipal.Onibus1;
Menu[25] := FrmPrincipal.Carreta1;
Menu[26] := FrmPrincipal.AulasPraticas1;
Menu[27] := FrmPrincipal.AulasTeoricas2;
Menu[28] := FrmPrincipal.Contrato1;
Menu[29] := FrmPrincipal.Diario1;
Menu[30] := FrmPrincipal.Semanal1;
Menu[31] := FrmPrincipal.Diario2;
Menu[32] := FrmPrincipal.Semanal2;
Menu[33] := FrmPrincipal.Presenca1;
Menu[34] := FrmPrincipal.Certificacao1;
Menu[35] := FrmPrincipal.Presenca2;
Menu[36] := FrmPrincipal.Certificacao2;
Menu[37] := FrmPrincipal.Parcelas2;
Menu[38] := FrmPrincipal.Carne1;
Menu[39] := FrmPrincipal.CaixaDiario2;
Menu[40] := FrmPrincipal.Exames;
Menu[41] := FrmPrincipal.Utilitarios1;
Menu[42] := FrmPrincipal.Backup1;
Menu[43] := FrmPrincipal.Sistema1;
For i := 1 to High (Menu) do
Begin
Menu[i].Enabled := (Nivel[i]='1');
End;
Liberado := True;
Close;
end;
procedure TFrmLogin.SpbOkClick(Sender: TObject);
Begin
If ( (Length(Trim(TxtUsu.Text))=0) or (Length(Trim(TxtSen.Text))=0) ) then
Begin
ShowMessage ('Usuário / senha inválido!');
Exit;
end;
If ( ConsultaRegistros ('Usuarios U, Nivel N', 'U.Senha, N.Acesso','U.Nome='+ #39 + TxtUsu.Text + #39)) then
Begin
If (LeDados ('Senha')<>TxtSen.Text) then
Begin
Inc(Acessos);
ShowMessage ('Senha incorreta!');
If (Acessos >2) Then Application.Terminate;// se o usuario digitar 3 x a senha errada é finalizada a aplicação
Exit;
end;
LeAcesso (LeDados('Acesso'));
end
else
Begin
Inc(Acessos);
ShowMessage ('Usuário Inexistente!');
If (Acessos >2) Then Application.Terminate;// se o usuario digitar 3 x a senha errada é finalizada a aplicação
end;
End;
procedure TFrmLogin.FormClose(Sender: TObject; var Action: TCloseAction);
begin
If (Liberado) then
Begin
Action := caFree;
end
else
begin
Application.Terminate;
end;
end;
procedure TFrmLogin.FormCreate(Sender: TObject);
begin
Liberado := False;
end;
procedure TFrmLogin.SpbCanClick(Sender: TObject);
begin
Close;
end;
End.
No View Source:
CODE
.....
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(Tdtmiza, dtmiza);
Application.CreateForm(Tfrmprincipal, frmprincipal);
Application.CreateForm(TFrmLogin, FrmLogin);
FrmLogin.ShowModal;
Application.CreateForm(TFrmSplash, FrmSplash);
FrmSplash.show; // exibe a tela FrmSplash
FrmSplash.Refresh; // dá um refresh na tela
sleep(0000); // aguarda 02 segundo - incluir na unit o SysUtils na Uses
FrmSplash.Release; // Elimina a tela da memoria
FrmSplash := nil; // anula a referencia ao ponteiro do objeto
Application.Run;
end.