FireBird Com Delphi Field Not Found
31/05/2021
0
Senha := edtsenha.text;
TFDQuery.close;
TFDQuery.Sql.Clear;
TFDQuery.Sql...(''''select nome,senha from usuarios'''');
loginsel := fieldbyname(''''nome'''').value;
senhasel := fieldbyname(''''nome'''').value;
If (loginsel = login) and (senhasel = senha) then
Begin
ShowMessage(''''voce está logado'''');
End;
TFDQuery.open;
Ignorem os erros de digitação está correto no meu código, mas estou acostumado com o php é diferente, já até adicionei o componente do driver do FireBird e fica dando o mesmo erro :
Field nome Not Found
Queria saber o que fiz de errado eu tentei citar os campos do select e fazer a comparação para fazer o login mas fica dando está mensagem de erro, parece que não puxa os campos do banco de dados;
Helton Faria
Post mais votado
01/06/2021
pelo que eu entendi do teu código, deveria ser algo assim:
Login := edtlogin.text; // login informado Senha := edtsenha.text; // senha informada FDQuery.Close; FDQuery.Sql.Text := 'select nome from usuarios where nome = :login and senha = :password' FDQuery.ParamByName('login').Asstring := login; FDQuery.ParamByName('password').Asstring := senha; FDQuery.Open; If FDQuery.Eof then ShowMessage('Usuário ou senha inválidos');
Emerson Nascimento
Mais Posts
02/06/2021
Helton Faria
pelo que eu entendi do teu código, deveria ser algo assim:
Login := edtlogin.text; // login informado Senha := edtsenha.text; // senha informada FDQuery.Close; FDQuery.Sql.Text := 'select nome from usuarios where nome = :login and senha = :password' FDQuery.ParamByName('login').Asstring := login; FDQuery.ParamByName('password').Asstring := senha; FDQuery.Open; If FDQuery.Eof then ShowMessage('Usuário ou senha inválidos');
Obrigado pela ajuda eu consegui fazer o que queria meu código ficou assim:
procedure TFrmLogin.rct_fundo_acessarClick(Sender: TObject); var login, senha, login_edt, senha_edt: String; begin login_edt := edt_login.text; // login informado senha_edt := edt_senha.text; // senha informada DM_Comanda.FDQuery.Close; DM_Comanda.FDQuery.Sql.Clear; DM_Comanda.FDQuery.Sql.Add('select nome,senha from usuarios where nome = :login and senha = :password'); DM_Comanda.FDQuery.ParamByName('login').Asstring := login_edt; DM_Comanda.FDQuery.ParamByName('password').Asstring := senha_edt; DM_Comanda.FDQuery.Open; login := DM_Comanda.FDQuery.FieldByName('nome').Value; senha := DM_Comanda.FDQuery.FieldByName('senha').Value; If (login_edt = login) and (senha_edt = senha) then begin ShowMessage('Você está logado!!'); end else begin ShowMessage('Você errou o login ou a senha!!!'); end; end;
Só que agora com o else depois do teste ta dando uma mensagem assim: Could not convert variant of type (null) into type (OleStr),
eu não entendo está tudo como String e está falando de converssão o que pode ser ?
02/06/2021
Emerson Nascimento
você está fazendo assim:
"me traga o nome do usuário que possui esse login e senha que foram digitados"
"agora veja se o login e senha digitados são os mesmo que eu procurei".
não faz sentido porque a busca com parâmetros só terá retorno se o login e senha forem encontrados.
basta:
procedure TFrmLogin.rct_fundo_acessarClick(Sender: TObject); begin DM_Comanda.FDQuery.Close; DM_Comanda.FDQuery.SQL.Text := 'select nome from usuarios where nome = :login and senha = :password'; DM_Comanda.FDQuery.ParamByName('login').Asstring := edt_login.text; // login informado DM_Comanda.FDQuery.ParamByName('password').Asstring := edt_senha.text; // senha informada DM_Comanda.FDQuery.Open; If DM_Comanda.FDQuery.Eof then // se está vazio é porque o login ou senha estão errados ShowMessage('Você errou o login ou a senha!!!') else ShowMessage('Você está logado!!'); end;
02/06/2021
Helton Faria
você está fazendo assim:
"me traga o nome do usuário que possui esse login e senha que foram digitados"
"agora veja se o login e senha digitados são os mesmo que eu procurei".
não faz sentido porque a busca com parâmetros só terá retorno se o login e senha forem encontrados.
basta:
procedure TFrmLogin.rct_fundo_acessarClick(Sender: TObject); begin DM_Comanda.FDQuery.Close; DM_Comanda.FDQuery.SQL.Text := 'select nome from usuarios where nome = :login and senha = :password'; DM_Comanda.FDQuery.ParamByName('login').Asstring := edt_login.text; // login informado DM_Comanda.FDQuery.ParamByName('password').Asstring := edt_senha.text; // senha informada DM_Comanda.FDQuery.Open; If DM_Comanda.FDQuery.Eof then // se está vazio é porque o login ou senha estão errados ShowMessage('Você errou o login ou a senha!!!') else ShowMessage('Você está logado!!'); end;
Sou estudante de Análise de Sistemas, o que certamente a função "eof" faz ?
02/06/2021
Helton Faria
como eu faço aqui no delphi ? meu código está assim :
procedure TFrmPrincipal.rct_atualizarmesaClick(Sender: TObject); var numesa : integer; begin numesa := edt_numcomand.Text.ToInteger; if edt_numcomand.Text <> '' then begin DM_Comanda.FDQuery.Close; DM_Comanda.FDQuery.SQL.Clear; DM_Comanda.FDQuery.SQL.Add('select * from MESACARTAO where mesa like :cMesa'); DM_Comanda.FDQuery.ParamByName('cMesa').AsInteger := numesa; DM_Comanda.FDQuery.Open; lbl_numesa.Text := edt_numcomand.Text; end; end;[
Quando eu clico no botão que filtra as mesas sem nada no campo ele exibe a mensagem para mim :
"" is not a valid integer value for integer type
como eu poderia estar corrigindo isto ?
02/06/2021
Emerson Nascimento
Se você acabou de abrir a tabela e já está no fim do arquivo quer dizer que não há dados.
Sobre o erro "is not a integer value"... Está ocorrendo porque você está tentando transformar uma string vazia em inteiro.
Para evitar o erro coloque a linha da atribuição de numesa dentro do if
04/06/2021
Helton Faria
Se você acabou de abrir a tabela e já está no fim do arquivo quer dizer que não há dados.
Sobre o erro "is not a integer value"... Está ocorrendo porque você está tentando transformar uma string vazia em inteiro.
Para evitar o erro coloque a linha da atribuição de numesa dentro do if
Emerson estou acostumado com o php web, muito obrigado por ter me ajudado eu estou começando agora a estudar o delphi há muitas diferenças, no php não precisa de tudo isso ele já entende o tipo de variável se é inteirou ou string e faz as conversões automáticamente, para mim tudo é novo agora. Obrigado!!!
Clique aqui para fazer login e interagir na Comunidade :)
Inserção de url