Sql error code = -104
20/01/2006
0
Tenho uma tabela usuario e outra perfil!
Está assim na tabela usuário:
ADD CONSTRAINT ´FK_USUARIO_PERFIL´ FOREIGN KEY (´NIVEL´) REFERENCES ´PERFIL´ (´ID´)
Tabela Perfil :
CONSTRAINT ´PK_PERFIL´ PRIMARY KEY (´ID´)
O meu Sql de acesso está assim :
select * from USUARIO, PERFIL
WHERE usuario.nivel = perfil.ID
Esta sentença está num IBQuery no form Login, ligado ao DM.IBDatabase e o DM.Ds, mas me confundi, pois tem um Ds no form tambem, mas como está dando erro de sql , não o que fazer ! como posso resolver ?
valeu....
Ingawebfm
Posts
21/01/2006
Ingawebfm
Vou colocar minhas tabelas !
CREATE TABLE ´USUARIO´
(
´ID´ INTEGER NOT NULL,
´STATUS´ VARCHAR(1),
´MARCA´ VARCHAR(1),
´DATA_INC´ DATE,
´DATA_ALT´ DATE,
´DATA_HAB´ DATE,
´SENHA´ CHAR(7),
´LOGIN´ VARCHAR(15),
´DPTO´ VARCHAR(20),
´NIVEL´ CHAR(1),
CONSTRAINT ´PK_USUARIO´ PRIMARY KEY (´ID´)
);
ALTER TABLE ´USUARIO´ ADD CONSTRAINT ´FK_USUARIO_PERFIL´ FOREIGN KEY (´NIVEL´) REFERENCES ´PERFIL´ (´ID´);
CREATE TABLE ´PERFIL´ // (Resumido)
(
´ID´ CHAR(1) NOT NULL,
´STATUS´ VARCHAR(1),
´MARCA´ VARCHAR(1),
´DATA_INC´ DATE,
´DATA_ALT´ DATE,
´DATA_HAB´ DATE,
´OCULTAR´ VARCHAR(1),
CONSTRAINT ´PK_PERFIL´ PRIMARY KEY (´ID´)
);
O SQL funciona mas quando rodo a aplicação e vou fazer o login, dá o erro SQL error code = -104 !
21/01/2006
Edilcimar
21/01/2006
Ingawebfm
procedure TLogin.Button1Click(Sender: TObject);
var
strSqlLog: string;
begin
strSqlLog:= ´select * from usuario,perfil WHERE usuario.nivel = perfil.id´;
strSqlLog:= strSqlLog + ´AND Login = ´ + #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 (menuPrin.QueryLogin.RecordCount) = 1 then
begin
MenuPrin.StatusBar1.Panels[2].Text:= ´´ + ´Usuário: ´ + Login.ValorNome.Text +
´ - ´ + menuPrin.QueryLogin.FieldByName(´Dpto´).AsString;
Login.Close;
end;
:idea:
21/01/2006
Vinicius2k
Observei aspas no seu script. Você utilizou as aspas no momento da criação da base?
Se sim, precisará utilizá-las sempre, também nas instruções SQL.
Além disso, ao utilizar aspas, maiúsculas e minúsculas fazem diferença:
select * from "USUARIO", "PERFIL" where "USUARIO"."NIVEL" = "PERFIL"."ID"
Se for este o caso, sugiro que recrie a base sem utilizar as aspas.
No procedimento que você postou, existe erro por falta de ´espaços´. Isto justifica o código de erro. Eu faria desta forma:
strSqlLog := ´select * from USUARIO, PERFIL where USUARIO.NIVEL = PERFIL.ID ´; strSqlLog := strSqlLog + ´and LOGIN = ´ + QuotedStr(valorNome.Text) + ´ ´; strSqlLog := strSqlLog + ´and SENHA = ´ + QuotedStr(valorSenha.Text); //ou strSqlLog := ´select * from USUARIO, PERFIL where USUARIO.NIVEL = PERFIL.ID´ + #32; strSqlLog := strSqlLog + ´and LOGIN = ´ + QuotedStr(valorNome.Text) + #32; strSqlLog := strSqlLog + ´and SENHA = ´ + QuotedStr(valorSenha.Text);
T+
21/01/2006
Ingawebfm
As aspas não usei, foi só um exemplo do MetaData banco,Ctrl+C + Ctrl+V;
Era isso mesmo que estava acontecendo erro falta de ´espaço´, fiquei me perguntando o que é isso: token unknown -line 1, char(66), mas não entendia, agora com sua explicação faz sentido, usei sua solução e funcionou perfeitamente, obrigado pela ajuda !
Valeu !
Clique aqui para fazer login e interagir na Comunidade :)