Ajuda com SQL

05/12/2005

0

PessoaALL, preciso de ajuda mais uma vez.

Estou construindo um sistema de login e recebo erro do SQL:
InterbaseError with message ´Dynamic SQL Error
SQL Error Code = -104
Token Unknown - line 1, char 65
fantasia´.

O código que digitei é o seguinte:

procedure TLogin.BitBtn1Click(Sender: TObject);
var
strSqlLog: string;
mensagem: string;
begin
strSqlLog := ´SELECT * FROM usuario, perfil WHERE usuario.nivel = perfil.id´;
strSqlLog := strSqlLog + ´AND fantasia =´ + #39 + (ValorNome.Text) + 39 ;
strSqlLog := strSqlLog + ´AND senha =´ + 39 + (ValorSenha.Text) + 39 ;

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

if not menuPrin.QueryLogin.IsEmpty then
begin
menuPrin.StatusBar1.Panels[2].Text := ´ ´+´Usuário: ´+ login.ValorNome.Text+´ - ´+menuPrin.QueryLogin.FieldByName(´dpto´).AsString;
end
else
begin
mensagem := ´Nome ou senha do usuário inválido.´ + #13 + 13 + ´Se você esqueceu sua senha, consulte ´ + 13 + ´ o administrador do sistema.´;
Application.MessageBox(Pchar(mensagem), ´Login não autorizado´,mb_Ok+mb_IconError);
ValorSenha.Text := ´´;
ValorSenha.SetFocus;
ModalResult := mrNone;
end;
end;

Estou usando um SQLQuery no menuPrin com a expressão:
strSqlLog := ´SELECT * FROM usuario, perfil WHERE usuario.nivel = perfil.id´;

Alquém pode me ajudar ???? :oops:


Responder

Posts

06/12/2005

Bruno Belchior

strSqlLog := Format(´select * from USUARIO as U join PERFIL as P on U.nivel = P.id where Fantasia = ¬s and Senha =¬s´,  [QuotedStr(ValorNome.Text), QuotedStr(ValorSenha.Text)]);
Coloquen um Break point nessas linhas e pegue o valor da variável e veja o erro de SQL no seu banco e dados...


Responder

06/12/2005

Wiltonfenix

Faça algumas mudanças no SQL:

strSqlLog := ´SELECT * FROM usuario, perfil WHERE usuario.nivel = perfil.id´; 
strSqlLog := strSqlLog + ´ AND fantasia = "´+ValorNome.Text+´"´ ; 
strSqlLog := strSqlLog + ´AND senha = "´+ValorSenha.Text+´"´; 



Responder

06/12/2005

Wiltonfenix

strSqlLog := ´SELECT * FROM usuario, perfil WHERE usuario.nivel = perfil.id´; 
strSqlLog := strSqlLog + ´ AND fantasia = "´+ValorNome.Text+´"´ ; 
strSqlLog := strSqlLog + ´ AND senha = "´+ValorSenha.Text+´"´;



Responder

06/12/2005

Lb9

Wilton valeu pela dica, mas com este código o erro mudou para:

SQL Error Code = -206
Column Unknown
A´.

Este A é a senha q coloquei no banco para teste.


Responder

06/12/2005

Lb9

A senha não é o conteúdo da coluna fantasia


Responder

07/12/2005

Bruno Belchior

Qual o Banco de Dados afinal?


Responder

07/12/2005

Lb9

Nooooossa amigo desculpe, é o Interbase 6.5.


Responder

07/12/2005

Xtreme

tenta assim

strSqlLog := ´ SELECT * FROM usuario, perfil WHERE usuario.nivel = perfil.id ´;
strSqlLog := strSqlLog + ´ AND fantasia = ´+quotedstr(ValorNome.Text);
strSqlLog := strSqlLog + ´ AND senha = ´+quotedstr(ValorSenha.Text);



Responder

07/12/2005

Bruno Belchior

[quote:483e6cd9ed=´Bruno Belchior´]
strSqlLog := Format(´select * from USUARIO as U join PERFIL as P on U.nivel = P.id where Fantasia = ¬s and Senha =¬s´,  [QuotedStr(ValorNome.Text), QuotedStr(ValorSenha.Text)]);
Coloquen um Break point nessas linhas e pegue o valor da variável e veja o erro de SQL no seu banco e dados...[/quote:483e6cd9ed]Como eu disse, coloque um BreakPoint e pegue o valor da variável strSqlLog, depois jogue no IBConsole e verá exatamente onde ocorreu o erro, apesar de acreditar q o SQL acima está correto...


Responder

07/12/2005

Lb9

tenta assim
strSqlLog := ´ SELECT * FROM usuario, perfil WHERE usuario.nivel = perfil.id ´;
strSqlLog := strSqlLog + ´ AND fantasia = ´+quotedstr(ValorNome.Text);
strSqlLog := strSqlLog + ´ AND senha = ´+quotedstr(ValorSenha.Text);


Pessoal muito obrigado a todos que contribuiram. Essa foi a solução do problema.

Lucas


Responder

07/12/2005

Lb9

Apesar de ter o problema solucionado, gostaria de saber qual a função desse ´quotedstr´ antes de carregar os dados do usuário.

Alguém pode explicar, assim fica uma solução tipo:

´Mata a cobra e mostra o pau´. :lol:

Obrigado mais uma vez.


Responder

08/12/2005

Bruno Belchior

QuotedStr coloca aspas em uma string, em vez de fazer aquela bagunça com strings, abrindo e fechando diversas aspas, basta usá-la...


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