Ajuda com SQL
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:
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:
Lb9
Curtidas 0
Respostas
Bruno Belchior
05/12/2005
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)]);
GOSTEI 0
Wiltonfenix
05/12/2005
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+´"´;
GOSTEI 0
Wiltonfenix
05/12/2005
strSqlLog := ´SELECT * FROM usuario, perfil WHERE usuario.nivel = perfil.id´; strSqlLog := strSqlLog + ´ AND fantasia = "´+ValorNome.Text+´"´ ; strSqlLog := strSqlLog + ´ AND senha = "´+ValorSenha.Text+´"´;
GOSTEI 0
Lb9
05/12/2005
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.
SQL Error Code = -206
Column Unknown
A´.
Este A é a senha q coloquei no banco para teste.
GOSTEI 0
Lb9
05/12/2005
A senha não é o conteúdo da coluna fantasia
GOSTEI 0
Bruno Belchior
05/12/2005
Qual o Banco de Dados afinal?
GOSTEI 0
Lb9
05/12/2005
Nooooossa amigo desculpe, é o Interbase 6.5.
GOSTEI 0
Xtreme
05/12/2005
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);
GOSTEI 0
Bruno Belchior
05/12/2005
[quote:483e6cd9ed=´Bruno Belchior´]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...
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)]);
GOSTEI 0
Lb9
05/12/2005
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
GOSTEI 0
Lb9
05/12/2005
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.
Alguém pode explicar, assim fica uma solução tipo:
´Mata a cobra e mostra o pau´. :lol:
Obrigado mais uma vez.
GOSTEI 0
Bruno Belchior
05/12/2005
QuotedStr coloca aspas em uma string, em vez de fazer aquela bagunça com strings, abrindo e fechando diversas aspas, basta usá-la...
GOSTEI 0