Sql error code = -104

20/01/2006

0

Olá pessoal estou com o seguinte problema !

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

Ingawebfm

Responder

Posts

21/01/2006

Edilcimar

este campo usuário tem acento ou cedilha?


Responder

21/01/2006

Ingawebfm

Edilcimar, no meu caso usuario é uma tabela, e quanto a cedilha não entendi o que você quis dizer, meu banco é firebird !

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 !


Responder

21/01/2006

Edilcimar

se alguma palavra na tabela tiver acento ou cedilha ´Ç,ç´ e vc não estiver utilizando um charset que permita estas coisas, vai dar erro


Responder

21/01/2006

Ingawebfm

Edilcimar, obrigado pela dica, mas ainda não consegui resolver meu problema vou colocar aqui o procedimento onde ocorre o erro se alguém puder analisar.... valeu !

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:


Responder

21/01/2006

Vinicius2k

Colega,

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+


Responder

21/01/2006

Ingawebfm

Olá Vinicius !

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 !


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar