Problemas na programção do Login so sistema

01/06/2008

0

EDataBaseError with message ´Token unknown - line 1, char 74 LOGIN ´, Process stopped. Use Step or Run to continue

Estou usando DBExpress com SQLConnection , SQLQuery , DatasetProvider, ClientDataSet , DataSource


procedure TLogin.Button1Click(Sender: TObject);
var
strSqlLog: string;
begin
strSqlLog:= ´SELECT * FROM TB_USUARIO, TB_PERFIL WHERE TB_USUARIO.NIVEL = IDPERFIL´;
strSqlLog:= strSqlLog + ´AND LOGIN = ´ + #39 + (ValorNome.Text) + 39 ;
strSqlLog:= strSqlLog + ´AND SENHA = ´ + 39 + (valorSenha.Text) + 39 ;

menuPrin.qLogin.Close;
menuPrin.qLogin.SQL.Clear;
menuPrin.qLogin.SQL.Add(strSqlLog);
menuPrin.qLogin.Open;

if(menuPrin.qLogin.RecordCount) = 1 then
begin
menuPrin.StatusBar1.Panels[2].Text:= ´ ´ + ´Usuário: ´ + login.ValorNome.Text +
´ - ´ + menuPrin.qLogin.FieldByName(´DEPTO´).AsString;
login.Close;
end;
end;

Qual é o problema não consigo solucionar ? O Campo LOGIN E SENHA EXISTE NO BANCO FIREBIRD 1.5


Afterdev

Afterdev

Responder

Posts

01/06/2008

Emerson Nascimento

procedure TLogin.Button1Click(Sender: TObject);
var
  strSqlLog: string;
begin
  strSqlLog :=
    ´SELECT * ´+
    ´FROM TB_USUARIO, TB_PERFIL ´+ // tem um espaço no final
    ´WHERE TB_USUARIO.NIVEL = IDPERFIL ´+ // tem um espaço no final
    ´AND LOGIN = ´ + QuotedStr(ValorNome.Text) +
    ´ AND SENHA = ´ + QuotedStr(valorSenha.Text); // tem um espaço no início

  menuPrin.qLogin.Close;
  menuPrin.qLogin.SQL.Clear;
  menuPrin.qLogin.SQL.Add(strSqlLog);
  menuPrin.qLogin.Open;

  if(menuPrin.qLogin.RecordCount) = 1 then
  begin
    menuPrin.StatusBar1.Panels[2].Text:=
      ´ ´ + ´Usuário: ´ + login.ValorNome.Text +
      ´ - ´ + menuPrin.qLogin.FieldByName(´DEPTO´).AsString;
    login.Close;
  end;
end; 


da forma que você passou - sem os espaços - a string seria montada assim:
SELECT * FROM TB_USUARIO, TB_PERFIL WHERE TB_USUARIO.NIVEL = IDPERFILAND LOGIN = ´XXX´AND SENHA = ´XXX´.
perceba o trecho: TB_USUARIO.NIVEL = [b:d10ea201e0]IDPERFILAND[/b:d10ea201e0] LOGIN
a msg ´Token unknown - line 1, char 74 LOGIN´ mostra que a palavra LOGIN está exatamente na posição 74, por conta da falta do espaço entre [i:d10ea201e0]IDPERFIL[/i:d10ea201e0] e [i:d10ea201e0]AND[/i:d10ea201e0]

da forma que eu passei, a string será:
SELECT * FROM TB_USUARIO, TB_PERFIL WHERE TB_USUARIO.NIVEL = IDPERFIL AND LOGIN = ´XXX´ AND SENHA = ´XXX´
note que agora há espaços separando corretamente os comandos.


Responder

02/06/2008

Afterdev

Emerson obrigado pela ajuda vou modificar , mas agora não está compilando, veja a mensagem:


[Fatal Error] File not found: ´c:\arquivos de programas\borland\delphi7\Rave5\Lib\ComCtrls.pas´


Responder

02/06/2008

Afterdev

procedure TLogin.Button1Click(Sender: TObject);
var
  strSqlLog: string;
begin
  strSqlLog :=
    ´SELECT * ´+
    ´FROM TB_USUARIO, TB_PERFIL ´+ // tem um espaço no final
    ´WHERE TB_USUARIO.NIVEL = IDPERFIL ´+ // tem um espaço no final
    ´AND LOGIN = ´ + QuotedStr(ValorNome.Text) +
    ´ AND SENHA = ´ + QuotedStr(valorSenha.Text); // tem um espaço no início

  menuPrin.qLogin.Close;
  menuPrin.qLogin.SQL.Clear;
  menuPrin.qLogin.SQL.Add(strSqlLog);
  menuPrin.qLogin.Open;

  if(menuPrin.qLogin.RecordCount) = 1 then
  begin
    menuPrin.StatusBar1.Panels[2].Text:=
      ´ ´ + ´Usuário: ´ + login.ValorNome.Text +
      ´ - ´ + menuPrin.qLogin.FieldByName(´DEPTO´).AsString;
    login.Close;
  end;
end; 
da forma que você passou - sem os espaços - a string seria montada assim: SELECT * FROM TB_USUARIO, TB_PERFIL WHERE TB_USUARIO.NIVEL = IDPERFILAND LOGIN = ´XXX´AND SENHA = ´XXX´. perceba o trecho: TB_USUARIO.NIVEL = [b:18c8ca98f3]IDPERFILAND[/b:18c8ca98f3] LOGIN a msg ´Token unknown - line 1, char 74 LOGIN´ mostra que a palavra LOGIN está exatamente na posição 74, por conta da falta do espaço entre [i:18c8ca98f3]IDPERFIL[/i:18c8ca98f3] e [i:18c8ca98f3]AND[/i:18c8ca98f3] da forma que eu passei, a string será: SELECT * FROM TB_USUARIO, TB_PERFIL WHERE TB_USUARIO.NIVEL = IDPERFIL AND LOGIN = ´XXX´ AND SENHA = ´XXX´ note que agora há espaços separando corretamente os comandos.


Olá Emerson !

Fiz conforme você mostrou e aparentemente está correto mais ocorre um erro SQL error code = -206 Column unknown IDPERFIL At line 1, column 68. Column does not belong to referenced table.

O Select que fiz na Query está exatamente igual, funcionou e trouxe todos os campos das tabelas Usuario e Perfil, inclusive o campo IDPERFIL, só que ao trocar o IDPERFIL por 0, no codigo do botão o sistema logou normalmente, porque já tinha cadastrado esse valor no banco antes, mas continuo com esse problema quando for cadastrar mais usuarios não vai dar certo ! Não sei como solucionar esse problema .... alias também coloquei no lugar do IDPERFIL a forma correta eu acho TB_PERFIL.IDPERFIL e não funcionou.,,,,


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