Erro Verificação de Login

30/09/2020

0

Estou tentando fazer uma verificação de login com o banco de dados, porém estou tendo erro de Open Methods Select/Like. Vou deixar o link do projeto para melhor entendimento. https://github.com/pasqualiin/Concessionaria.
O login é feito via CPF e a senha cadastrada pelo usuário.
function TVendedorDAO.VerificarLogin(user, passw: string): Boolean;
var
  SQL: string;
begin
  SQL := ''SELECT C.cpf, C.senha from vendedor C where C.cpf like '' +
    QuotedStr(user) + '' and C.senha like '' + QuotedStr(passw);

  Result := ExecutarComando(SQL) > 0;
end;


No onClick do botão entrar estou fazendo o seguinte:
procedure TFrmLogin.SpeedButton1Click(Sender: TObject);
begin
  VendedorDAO := TVendedorDAO.Create;
  VendedorDAO.VerificarLogin(edtUser.Text, edtPassw.Text);
  FrmPrincipal.ShowModal;
end;
Guilherme Algeri

Guilherme Algeri

Responder

Post mais votado

30/09/2020

quando você trabalha com SELECT, o método utilizado precisa ser OPEN
ExecSQL deve ser utilizado para os demais comandos (UPDATE, DELETE, DROP, etc)

Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

30/09/2020

Emerson Nascimento

aparentemente a função VerificarLogin está correta.
function TVendedorDAO.VerificarLogin(user, passw: string): Boolean;
var
  SQL: string;
begin
  SQL := 'SELECT cpf, senha from vendedor where cpf = ' + QuotedStr(user) + ' and senha = ' + QuotedStr(passw);
  Result := ExecutarComando(SQL) > 0;
end;

é preciso saber como foi implementada a função ExecutarComando().

Responder

30/09/2020

Guilherme Algeri

aparentemente a função VerificarLogin está correta.
function TVendedorDAO.VerificarLogin(user, passw: string): Boolean;
var
  SQL: string;
begin
  SQL := 'SELECT cpf, senha from vendedor where cpf = ' + QuotedStr(user) + ' and senha = ' + QuotedStr(passw);
  Result := ExecutarComando(SQL) > 0;
end;

é preciso saber como foi implementada a função ExecutarComando().



A função ExecutarComando:
function TBaseDAO.ExecutarComando(pSQL: string): integer;
begin
  Try
    DM.Conn.StartTransaction;
    FQuery.SQL.Text := pSQL;
    FQuery.ExecSQL;
    Result := FQuery.RowsAffected;
    DM.Conn.Commit;
  except
    DM.Conn.Rollback;
  End;
Responder

30/09/2020

Emerson Nascimento

crie uma outra função para usar com esse tipo de análise:
function TBaseDAO.HaRegistro(pSQL: string): integer;
begin
  Try
    FQuery.SQL.Text := pSQL;
    FQuery.Open;
    Result := not FQuery.Eof;
    FQuery.Close;
  except
    Result := false;
  end;
end;

e use assim:
function TVendedorDAO.VerificarLogin(user, passw: string): Boolean;
begin
  Result := HaRegistro('SELECT cpf, senha from vendedor where cpf = ' + QuotedStr(user) + ' and senha = ' + QuotedStr(passw));
end;
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar