Fórum select #208846

23/01/2004

0

alguem pode me ajudar?

tenho 3 tabelas uma de movimento, uma de usuarios e uma de login. quando excluir um usuario precisa saber se ele fez algum movimento ou se tem algun login com ele. se tiver nao pode excluir. meu codigo é:
query3.Close;
query3.SQL.Clear;
query3.SQL.Add(´select usu.COD_USUARIO, log.cod_usuario, usu.nm_usuario,mov.cod_usuario´);
query3.SQL.Add(´from movimento mov,usuarios usu,login log where usu.cod_usuario=mov.cod_usuario and log.cod_usuario=usu.cod_usuario and (log.cod_usuario = :codigo_usuario or mov.cod_usuario=:codigo_usuario)´);
query3.ParamByName(´codigo_usuario´).AsString := txtcodigo.Text;
query3.Open;

ta dando problema alguem sabe o que é?


Speedrob

Speedrob

Responder

Posts

23/01/2004

Quintelaj

poderia postar o erro


Responder

Gostei + 0

23/01/2004

Rômulo Barros

query3.Close; query3.SQL.Clear; query3.SQL.Add(´select usu.COD_USUARIO, log.cod_usuario, usu.nm_usuario,mov.[color=red:b523d397ad]cod_usuario´[/color:b523d397ad]); query3.SQL.Add([color=red:b523d397ad]´from[/color:b523d397ad] movimento mov,usuarios usu,login log where usu.cod_usuario=mov.cod_usuario and log.cod_usuario=usu.cod_usuario and (log.cod_usuario = :codigo_usuario or mov.cod_usuario=:codigo_usuario)´); query3.ParamByName(´codigo_usuario´).AsString := txtcodigo.Text; query3.Open;


// O erro é q vc naum deu um espaço entre o select e o from, veja:

query3.Close; 
query3.SQL.Clear; 
query3.SQL.Add(´select usu.COD_USUARIO, log.cod_usuario, usu.nm_usuario,mov.cod_usuario´); 
query3.SQL.Add(´ from movimento mov,usuarios usu,login log where usu.cod_usuario=mov.cod_usuario and log.cod_usuario=usu.cod_usuario and (log.cod_usuario = :codigo_usuario or mov.cod_usuario=:codigo_usuario)´); 
query3.ParamByName(´codigo_usuario´).AsString := txtcodigo.Text; 
query3.Open; 



Responder

Gostei + 0

23/01/2004

Vanius

Ola pessoal.

Gostaria de resaltar MAIS uma vez q quando vc utiliza query.add
vc nao precisa ficar colocando ESPAÇOS no inicio e no final, diferente do metodo:
query.add(´bla_bla_bla´+
´ bla_bla_bla ´);// neste caso, precisamos de dar espaços.
agora, em:
query.add(´bla_bla_bla´);
query.add(´bla_bla_bla´); //nao necessita de espaço. veja pelo Evaluete/Modify (Ctrl+F7).

Fera, para resolver seu problema, corrija a sintaxe onde vc esta utilizando OR.
esta mais ou menos assim (x = y OR a = b). Nesta hora, o delphi confunde as coisas. Ele tenta ver se x=y, a=b, y or a e outras coisas...

Corrija isto colocando mais uns parenteses ficando assim:
( (x = y) OR (a=b) );

beleza.
Agora, se nao for isto, avisa novamente.

ah, LOG é uma palavra reservada do SQL. Altere ele para qualquer outra coisa.
Mais um último conselho, de uma lida em querys com INNER JOIN, LEFT OUTER JOIN e RIGTH OUTER JOIN. Com isto sua query tem uma resposta um pouco mais rápida, alem de ficar mais clara.

Abraços,

Vanius Girodo


Responder

Gostei + 0

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

Aceitar