Tela de Login Delhpi Seattle + Postgre

20/03/2019

0

Estou fazendo uma tela de login, com o Delphi Seattle, porém está ocorrendo uma falha e não consigo resolver, o evento OnClick do meu botão está assim:

procedure TfrmLogin.btnOkClick(Sender: TObject);
begin
QueryLogin.Close;
QueryLogin.SQL.Clear;
QueryLogin.Open(''select * from usuario where codigo = :codigo and senha = :senha'');
QueryLogin.ParamByName(''codigo'').AsInteger := strtoint(edtUsuario.Text);
QueryLogin.ParamByName(''senha'').AsString := edtSenha.Text;
QueryLogin.ExecSQL();
if QueryLogin.RecordCount > 0 then begin
frmNavega.Show;
frmLogin.Close;
end;
if QueryLogin.RecordCount = 0 then
MessageDlg(''Login inválido, usuário ou senha incorretos, verifique!'', mtError, [mbOK], 0);

end;

Esta bem cru, pois estou só tentando fazer funcionar antes, não coloquei validação de usuário e senha nem nada, porém quando eu coloco um código de usuário e senha cadastrado no banco de dados ocorre a mensagem abaixo:

---------------------------
pprincipal
---------------------------
[FireDAC][Phys][pG]-335. Parameter [CODIGO] data type is unknown. Hint: specify TFDParam.DataType or assign TFDParam value before Prepare/Execute call.
---------------------------
OK
---------------------------
Ferrari

Ferrari

Responder

Post mais votado

21/03/2019

Olá amigo,

Basta ir na Propriedade Parameters do componente QueryLogin, selecionar o parâmetro CODIGO que aparece alí e especificar o tipo, se é ftstring ou ftinteger.

Um forte abraço e fique com Deus.

Hélio Devmedia

Hélio Devmedia
Responder

Mais Posts

21/03/2019

Ferrari

Olá amigo,

Basta ir na Propriedade Parameters do componente QueryLogin, selecionar o parâmetro CODIGO que aparece alí e especificar o tipo, se é ftstring ou ftinteger.

Um forte abraço e fique com Deus.


Obrigado pela dica amigo, mas não consegui achar esses componentes que fala, eu dei um duplo click na query, fui em parameters, porém não achei nada referenciando o código.
Responder

21/03/2019

Ferrari

Olá amigo,

Basta ir na Propriedade Parameters do componente QueryLogin, selecionar o parâmetro CODIGO que aparece alí e especificar o tipo, se é ftstring ou ftinteger.

Um forte abraço e fique com Deus.


talvez, não seja o que especifiquei aqui?
QueryLogin.ParamByName('codigo').AsInteger := strtoint(edtUsuario.Text);
QueryLogin.ParamByName('senha').AsString := edtSenha.Text;
Responder

22/03/2019

Erich

Estou fazendo uma tela de login, com o Delphi Seattle, porém está ocorrendo uma falha e não consigo resolver, o evento OnClick do meu botão está assim:

procedure TfrmLogin.btnOkClick(Sender: TObject);
begin
QueryLogin.Close;
QueryLogin.SQL.Clear;
QueryLogin.Open(''select * from usuario where codigo = :codigo and senha = :senha'');
QueryLogin.ParamByName(''codigo'').AsInteger := strtoint(edtUsuario.Text);
QueryLogin.ParamByName(''senha'').AsString := edtSenha.Text;
QueryLogin.ExecSQL();
if QueryLogin.RecordCount > 0 then begin
frmNavega.Show;
frmLogin.Close;
end;
if QueryLogin.RecordCount = 0 then
MessageDlg(''Login inválido, usuário ou senha incorretos, verifique!'', mtError, [mbOK], 0);

end;

Esta bem cru, pois estou só tentando fazer funcionar antes, não coloquei validação de usuário e senha nem nada, porém quando eu coloco um código de usuário e senha cadastrado no banco de dados ocorre a mensagem abaixo:

---------------------------
pprincipal
---------------------------
[FireDAC][Phys][pG]-335. Parameter [CODIGO] data type is unknown. Hint: specify TFDParam.DataType or assign TFDParam value before Prepare/Execute call.
---------------------------
OK
---------------------------
Amigo o erro está aqui! >> QueryLogin.Open(''select * from usuario where codigo = :codigo and senha = :senha'');
o Certo é QueryLogin.SQL.ADD(''select * from usuario where codigo = :codigo and senha = :senha'');
Responder

22/03/2019

Erich

Estou fazendo uma tela de login, com o Delphi Seattle, porém está ocorrendo uma falha e não consigo resolver, o evento OnClick do meu botão está assim:

procedure TfrmLogin.btnOkClick(Sender: TObject);
begin
QueryLogin.Close;
QueryLogin.SQL.Clear;
QueryLogin.Open(''''select * from usuario where codigo = :codigo and senha = :senha'''');
QueryLogin.ParamByName(''''codigo'''').AsInteger := strtoint(edtUsuario.Text);
QueryLogin.ParamByName(''''senha'''').AsString := edtSenha.Text;
QueryLogin.ExecSQL();
if QueryLogin.RecordCount > 0 then begin
frmNavega.Show;
frmLogin.Close;
end;
if QueryLogin.RecordCount = 0 then
MessageDlg(''''Login inválido, usuário ou senha incorretos, verifique!'''', mtError, [mbOK], 0);

end;

Esta bem cru, pois estou só tentando fazer funcionar antes, não coloquei validação de usuário e senha nem nada, porém quando eu coloco um código de usuário e senha cadastrado no banco de dados ocorre a mensagem abaixo:

---------------------------
pprincipal
---------------------------
[FireDAC][Phys][pG]-335. Parameter [CODIGO] data type is unknown. Hint: specify TFDParam.DataType or assign TFDParam value before Prepare/Execute call.
---------------------------
OK
---------------------------
cccc/quote]
Responder

22/03/2019

Hélio Devmedia

Olá amigo,

Basta ir na Propriedade Parameters do componente QueryLogin, selecionar o parâmetro CODIGO que aparece alí e especificar o tipo, se é ftstring ou ftinteger.

Um forte abraço e fique com Deus.


talvez, não seja o que especifiquei aqui?
QueryLogin.ParamByName('codigo').AsInteger := strtoint(edtUsuario.Text);
QueryLogin.ParamByName('senha').AsString := edtSenha.Text;



Eu parto da premissa que você tem um componente dataSet dentro do seu formulário ou dataModule.

Quando você aciona uma variável no SQL (:codigo por exemplo) é necessário para alguns bancos você ir na propriedade Parameters do componente (basta selecioná-lo e verá esta opção no Object Inspector). alí você configura em tempo de projeto o tipo do parametro, mesmo que você utilize as propriedades asInteger ou asString posteriormente.
Responder

22/03/2019

Ferrari

Estou fazendo uma tela de login, com o Delphi Seattle, porém está ocorrendo uma falha e não consigo resolver, o evento OnClick do meu botão está assim:

procedure TfrmLogin.btnOkClick(Sender: TObject);
begin
QueryLogin.Close;
QueryLogin.SQL.Clear;
QueryLogin.Open(''select * from usuario where codigo = :codigo and senha = :senha'');
QueryLogin.ParamByName(''codigo'').AsInteger := strtoint(edtUsuario.Text);
QueryLogin.ParamByName(''senha'').AsString := edtSenha.Text;
QueryLogin.ExecSQL();
if QueryLogin.RecordCount > 0 then begin
frmNavega.Show;
frmLogin.Close;
end;
if QueryLogin.RecordCount = 0 then
MessageDlg(''Login inválido, usuário ou senha incorretos, verifique!'', mtError, [mbOK], 0);

end;

Esta bem cru, pois estou só tentando fazer funcionar antes, não coloquei validação de usuário e senha nem nada, porém quando eu coloco um código de usuário e senha cadastrado no banco de dados ocorre a mensagem abaixo:

---------------------------
pprincipal
---------------------------
[FireDAC][Phys][pG]-335. Parameter [CODIGO] data type is unknown. Hint: specify TFDParam.DataType or assign TFDParam value before Prepare/Execute call.
---------------------------
OK
---------------------------
Amigo o erro está aqui! >> QueryLogin.Open(''select * from usuario where codigo = :codigo and senha = :senha'');
o Certo é QueryLogin.SQL.ADD(''select * from usuario where codigo = :codigo and senha = :senha'');



Oi Amigo, ja tentei isso também fiz dessa forma:
procedure TfrmLogin.btnOkClick(Sender: TObject);
begin
QueryLogin.Close;
QueryLogin.SQL.Clear;
QueryLogin.SQL.Add('select * from usuario where codigo = :codigo and senha = :senha');
QueryLogin.ParamByName('codigo').AsInteger := strtoint(edtUsuario.Text);
QueryLogin.ParamByName('senha').AsString := edtSenha.Text;
QueryLogin.Open();
QueryLogin.ExecSQL();
if QueryLogin.RecordCount > 0 then begin
frmNavega.ShowModal;
frmLogin.Close;
end;
if QueryLogin.RecordCount = 0 then begin
MessageDlg('Login inválido, usuário ou senha incorretos, verifique!', mtError, [mbOK], 0);
edtUsuario.text := '';
edtSenha.Text := '';
edtUsuario.SetFocus;
end;
end;


e ocorreu a seguinte mensagem:
---------------------------
Atenção!!
---------------------------
QueryLogin: Cannot perform this operation on an open dataset.
---------------------------
OK
---------------------------
Responder

22/03/2019

Ferrari

Olá amigo,

Basta ir na Propriedade Parameters do componente QueryLogin, selecionar o parâmetro CODIGO que aparece alí e especificar o tipo, se é ftstring ou ftinteger.

Um forte abraço e fique com Deus.


talvez, não seja o que especifiquei aqui?
QueryLogin.ParamByName('codigo').AsInteger := strtoint(edtUsuario.Text);
QueryLogin.ParamByName('senha').AsString := edtSenha.Text;



Eu parto da premissa que você tem um componente dataSet dentro do seu formulário ou dataModule.

Quando você aciona uma variável no SQL (:codigo por exemplo) é necessário para alguns bancos você ir na propriedade Parameters do componente (basta selecioná-lo e verá esta opção no Object Inspector). alí você configura em tempo de projeto o tipo do parametro, mesmo que você utilize as propriedades asInteger ou asString posteriormente.


Eu fiz da seguinte forma amigo, eu criei um DataModule com um FDConnection, e na tela de login, coloquei um query que comunica direto com o DataModule, será que eu tinha que fazer algo diferente nessa estrutura?
Responder

22/03/2019

Erich

Estou fazendo uma tela de login, com o Delphi Seattle, porém está ocorrendo uma falha e não consigo resolver, o evento OnClick do meu botão está assim:

procedure TfrmLogin.btnOkClick(Sender: TObject);
begin
QueryLogin.Close;
QueryLogin.SQL.Clear;
QueryLogin.Open(''select * from usuario where codigo = :codigo and senha = :senha'');
QueryLogin.ParamByName(''codigo'').AsInteger := strtoint(edtUsuario.Text);
QueryLogin.ParamByName(''senha'').AsString := edtSenha.Text;
QueryLogin.ExecSQL();
if QueryLogin.RecordCount > 0 then begin
frmNavega.Show;
frmLogin.Close;
end;
if QueryLogin.RecordCount = 0 then
MessageDlg(''Login inválido, usuário ou senha incorretos, verifique!'', mtError, [mbOK], 0);

end;

Esta bem cru, pois estou só tentando fazer funcionar antes, não coloquei validação de usuário e senha nem nada, porém quando eu coloco um código de usuário e senha cadastrado no banco de dados ocorre a mensagem abaixo:

---------------------------
pprincipal
---------------------------
[FireDAC][Phys][pG]-335. Parameter [CODIGO] data type is unknown. Hint: specify TFDParam.DataType or assign TFDParam value before Prepare/Execute call.
---------------------------
OK
---------------------------
Amigo o erro está aqui! >> QueryLogin.Open(''select * from usuario where codigo = :codigo and senha = :senha'');
o Certo é QueryLogin.SQL.ADD(''select * from usuario where codigo = :codigo and senha = :senha'');



Oi Amigo, ja tentei isso também fiz dessa forma:
procedure TfrmLogin.btnOkClick(Sender: TObject);
begin
QueryLogin.Close;
QueryLogin.SQL.Clear;
QueryLogin.SQL.Add('select * from usuario where codigo = :codigo and senha = :senha');
QueryLogin.ParamByName('codigo').AsInteger := strtoint(edtUsuario.Text);
QueryLogin.ParamByName('senha').AsString := edtSenha.Text;
QueryLogin.Open();
QueryLogin.ExecSQL();
if QueryLogin.RecordCount > 0 then begin
frmNavega.ShowModal;
frmLogin.Close;
end;
if QueryLogin.RecordCount = 0 then begin
MessageDlg('Login inválido, usuário ou senha incorretos, verifique!', mtError, [mbOK], 0);
edtUsuario.text := '';
edtSenha.Text := '';
edtUsuario.SetFocus;
end;
end;


e ocorreu a seguinte mensagem:
---------------------------
Atenção!!
---------------------------
QueryLogin: Cannot perform this operation on an open dataset.
---------------------------
OK
---------------------------
após sua instrução SQL antes de do parambybame, da um qylogin.prepare, e tire o execSQL. Se não funcionar, Debuga e veja em que momento o erro aparece, ajuda bastante!
Responder

22/03/2019

Ferrari

Estou fazendo uma tela de login, com o Delphi Seattle, porém está ocorrendo uma falha e não consigo resolver, o evento OnClick do meu botão está assim:

procedure TfrmLogin.btnOkClick(Sender: TObject);
begin
QueryLogin.Close;
QueryLogin.SQL.Clear;
QueryLogin.Open(''select * from usuario where codigo = :codigo and senha = :senha'');
QueryLogin.ParamByName(''codigo'').AsInteger := strtoint(edtUsuario.Text);
QueryLogin.ParamByName(''senha'').AsString := edtSenha.Text;
QueryLogin.ExecSQL();
if QueryLogin.RecordCount > 0 then begin
frmNavega.Show;
frmLogin.Close;
end;
if QueryLogin.RecordCount = 0 then
MessageDlg(''Login inválido, usuário ou senha incorretos, verifique!'', mtError, [mbOK], 0);

end;

Esta bem cru, pois estou só tentando fazer funcionar antes, não coloquei validação de usuário e senha nem nada, porém quando eu coloco um código de usuário e senha cadastrado no banco de dados ocorre a mensagem abaixo:

---------------------------
pprincipal
---------------------------
[FireDAC][Phys][pG]-335. Parameter [CODIGO] data type is unknown. Hint: specify TFDParam.DataType or assign TFDParam value before Prepare/Execute call.
---------------------------
OK
---------------------------
Amigo o erro está aqui! >> QueryLogin.Open(''select * from usuario where codigo = :codigo and senha = :senha'');
o Certo é QueryLogin.SQL.ADD(''select * from usuario where codigo = :codigo and senha = :senha'');



Oi Amigo, ja tentei isso também fiz dessa forma:
procedure TfrmLogin.btnOkClick(Sender: TObject);
begin
QueryLogin.Close;
QueryLogin.SQL.Clear;
QueryLogin.SQL.Add('select * from usuario where codigo = :codigo and senha = :senha');
QueryLogin.ParamByName('codigo').AsInteger := strtoint(edtUsuario.Text);
QueryLogin.ParamByName('senha').AsString := edtSenha.Text;
QueryLogin.Open();
QueryLogin.ExecSQL();
if QueryLogin.RecordCount > 0 then begin
frmNavega.ShowModal;
frmLogin.Close;
end;
if QueryLogin.RecordCount = 0 then begin
MessageDlg('Login inválido, usuário ou senha incorretos, verifique!', mtError, [mbOK], 0);
edtUsuario.text := '';
edtSenha.Text := '';
edtUsuario.SetFocus;
end;
end;


e ocorreu a seguinte mensagem:
---------------------------
Atenção!!
---------------------------
QueryLogin: Cannot perform this operation on an open dataset.
---------------------------
OK
---------------------------
após sua instrução SQL antes de do parambybame, da um qylogin.prepare, e tire o execSQL. Se não funcionar, Debuga e veja em que momento o erro aparece, ajuda bastante!


isso mesmo, deu certo, muito obrigado, só me informa o que o prepare faz, para eu ficar ciente
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