Ir para conteúdo
Fórum Script Brasil
  • 0

Login + Banco de dados = erro


TIA0

Pergunta

Boa noite,

Estou tentando fazer um Tela de Login com Banco de Dados em Access, porem sempre que tento fazer o login o Delphi me retorna uma mensagem de erro! Estou quase certo que o problema está na declaração SQL...

77060137.th.png

Outra coisa! Fiz uma validação para conferir se os campos estão em branco, mas o Delphi acusa um erro e pula a ação!

68550960.th.png

procedure TLogin.btt_logarClick(Sender: TObject);
  var
    Login, Senha: String;
  begin
    Login := edt_login.Text;
    Senha := edt_senha.Text;

    if (Login = '') Or (Senha = '') then
    begin
      Application.MessageBox('Campo de Usuário ou Senha em branco!','ATENÇÃO',
                          Mb_IconWarning + Mb_OK);
      Exit;
    end;

    If not (CulturaDM.tb_secre_pessoal.Active) Then CulturaDM.tb_secre_pessoal.Open;

    CulturaDM.Q_pessoal.Close;
    CulturaDM.Q_pessoal.Sql.Clear;
    CulturaDM.Q_pessoal.Sql.Add('SELECT * FROM tb_secre_pessoal WHERE mat_num = '+ Login + ' and lg_senha = ' + Senha);
    CulturaDM.Q_pessoal.Open;

    If (CulturaDM.Q_pessoal.RecordCount > 0) then
      begin
        Showmessage('Login Existente');
      end
    else
      begin
        Showmessage('Login Inesistente');
      end;
  end;

abraços

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Jhonas...

Eu acessei os links e baixei tudo, testei... todos funcionaram! Se eu COPIAR/COLAR funciona, mas seu eu tentar implementar dá erro!!!

kuroi

Simm... eu estava achando que era o SQL tambem, por fim acabei mudando o método, mas ainda não consigo exito!

RESUMO... depois de varias tentativas eu consegui isolar o problema, caso alguém possa me dar uma ajuda... estou postando a tela de erro e aonde o erro aparece!

59668184.th.png91793149.th.png

unit UnDM;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB;

type
  TDM = class(TForm)
    AcessADO: TADOConnection;
    QLogin: TADOQuery;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  DM: TDM;

implementation

{$R *.dfm}

end.
unit UnLogin;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, jpeg, ComCtrls;

type
  TLogin = class(TForm)
    img_Logo: TImage;
    lb_login: TLabel;
    edt_login: TEdit;
    lb_senha: TLabel;
    edt_senha: TEdit;
    StatusBar: TStatusBar;
    bt_logar: TButton;
    bt_sair: TButton;
    procedure bt_sairClick(Sender: TObject);
    procedure bt_logarClick(Sender: TObject);
  private
    { Private declarations }
    Erro: Integer;
    Login, Senha, LoginBD, SenhaBD: String;
  public
    { Public declarations }
  end;

var
  Login: TLogin;

implementation

uses UnDM;

{$R *.dfm}

procedure TLogin.bt_sairClick(Sender: TObject);
begin
  close;
end;

procedure TLogin.bt_logarClick(Sender: TObject);
begin
  //If not (DM.QLogin.Active) Then DM.QLogin.Open;

  Login := edt_login.text;
  Senha := edt_senha.text;
  LoginBD := DM.QLogin.FieldByName('login').AsString;
  SenhaBD := DM.QLogin.FieldByName('senha').AsString;

  if (Login <> '') and (Senha <> '') then
    begin
      if (Login = LoginBD) and (Senha = SenhaBD) then
        begin
          StatusBar.Panels[0].Text := 'Login ou Senha Desconhecido...';
          Inc(Erro,1);
        end
      else
      begin
        ShowMessage('Deu Certo');
      end
    end
  else
    begin
      StatusBar.Panels[0].Text := 'Preencha os dois campos!';
      Inc(Erro,1);
    end;

  if (Erro = 3) then
    begin
      close;
    end;
end;

end.

Editado por TIA0
Link para o comentário
Compartilhar em outros sites

  • 0

Desculpa, foi uma falta de atenção minha! O lance das figuras é o seguinte, você clica uma vez e o site da Imageshack abre, com o site aberto você clica na lupa que fica de baixo da foto e ela aumenta a imagem para tamanho real... que no caso é 1440x900.

Link Ampliado - http://img199.imageshack.us/img199/1692/59668184.png

Link Ampliado - http://img413.imageshack.us/img413/9889/91793149.png

A principio o programa abre normalmente! Porem quando eu aperto o botão de "logar" aparece a seguinte tela de erro!

Project Project1.exe raised exception class EAccessViolation with message 'Acess violation at address 00475AA9 in module 'Project1.exe'. Read of address 000002FC'. Process stopped. Use Step or Run to continue.
Após a mensagem de erro, a suposta linha problemática fica demarcada!
LoginBD := DM.QLogin.FieldByName('login').AsString;
Quando coloco o mouse sobre a linha o programa me retorna um outro aviso!
DM.QLogin = Inaccessible value

Observações

O DataModule que eu criei consegue acessar tranquilamente o banco através do ADOConnection, o Query tambem consegue enchergar as tabelas e campos do banco quando eu aperto o Addfield.

Link Ampliado - http://img341.imageshack.us/img341/1025/21940642.png

Link Ampliado - http://img3.imageshack.us/img3/9757/19464731.png

Para testar se realmente a Query e o ADOConnection estavam funcionando, resolvi colocar um DataSource e um DBGrid para exibir os dados do banco! Para tal, interliguei os componentes da seguinte forma: ADOConnection -> Query -> DataSource -> DBGrid. Enfim... o DBGrid exibiu a tabela de login perfeitamente! Porem o programa continua acusando erro ao tentar fazer login (pesquisar e comparar dados com esse mesmo banco) através do form!

Link Ampliado - http://img10.imageshack.us/img10/2327/10504545.png

Editado por TIA0
Link para o comentário
Compartilhar em outros sites

  • 0
Login := edt_login.text;

Senha := edt_senha.text;

LoginBD := DM.Qlogin.FieldyName('login').asString; /// Erro nesta linha

SenhaBD := DM.Qlogin.FieldyName('senha').asString;

DM.QLogin = Inaccessible value
// valor inacessivel

o seu DM.QLogin pode estar fechado

procure usar o debug do delphi para verificar o que está ocorrendo

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Gente... o problema acabou! Não sei se eu que dei jeito nele, ou se foi ele que se consertou sozinho auhauhuauhahuahua

Com a cabeça fria e tempo sobrando eu resolvi refazer tudo, desta vez observando tudo com mais calma e atenção! No fim das contas só encontrei somente UMA coisa "errada"... o "DataModule" que eu criei foi feito em um Form ao invez de um DataModule mesmo... se funciona ou não desse jeito eu não sei, só sei que depois que eu refiz tudo de novo e SOMENTE com o DataModule diferente o login funcionou!

Enfim... por hora o problema acabou, farei mais testes e qualquer coisa peço ajuda de vocês! Muito obrigado a todos!!!

abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Só para constar! Editei o "programa" que acusava o erro e deletei o Form que representava o DataModule, após deleta-lo eu criei um novo DataModule, desta vez utilizando a forma correta! Com o novo DataModule criado, adicionei e configurei o ADOConnection e o Query... o resultado foi positivo, o programa passou a rodar perfeitamente!

Resumo! O erro foi ter criado um "DataModule" em um Form

abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...