Tela de Login Delhpi Seattle + Postgre
20/03/2019
0
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
Post mais votado
21/03/2019
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
Mais Posts
21/03/2019
Ferrari
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.
21/03/2019
Ferrari
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;
22/03/2019
Erich
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
---------------------------
o Certo é QueryLogin.SQL.ADD(''select * from usuario where codigo = :codigo and senha = :senha'');
22/03/2019
Erich
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
---------------------------
22/03/2019
Hélio Devmedia
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.
22/03/2019
Ferrari
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
---------------------------
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
---------------------------
22/03/2019
Ferrari
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?
22/03/2019
Erich
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
---------------------------
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
---------------------------
22/03/2019
Ferrari
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
---------------------------
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
---------------------------
isso mesmo, deu certo, muito obrigado, só me informa o que o prepare faz, para eu ficar ciente
Clique aqui para fazer login e interagir na Comunidade :)
Inserção de url