Clausula Where com problema ?
27/03/2006
0
O que pode estar errado com esta query?
Recebo esta mensagem ao executar.
---------------------------
Consfrm
---------------------------
Invalid use of keyword.
Token: Where
Line Number: 6.
---------------------------
OK
---------------------------
Query1.Sql.Add(´SELECT Notificacao.OficioNum, Notificacao.OficioAno, Notificacao.OrgaoDescricao, Notificacao.Cargo, Notificacao.Titulo, Notificacao.SubTitulo, Notificacao.Notificado, Oficio.Processo, Oficio.Nome´);
Query1.Sql.Add(´FROM ´Notificacao.DB´ Notificacao´);
Query1.Sql.Add(´ RIGHT OUTER JOIN ´Oficio.DB´ Oficio´);
Query1.Sql.Add(´ ON (Notificacao.OficioNum = Oficio.OficioNum´);
Query1.Sql.Add(´ AND (Notificacao.OficioAno = Oficio.OficioAno´);
Query1.Sql.Add(´Where Notificacao.OficioNum like ´+´´´´+´¬´+edit1.text+´¬´+´´´´);
Query1.Sql.Add(´AND Notificacao.OficioAno like ´+´´´´+´¬´+edit2.text+´¬´+´´´´);
um abraço a todos
Naelson
Naelson
Posts
27/03/2006
Paullsoftware
Query1.Sql.Add(´Where Notificacao.OficioNum like ´+´´´´+´¬´+edit1.text+´¬´+´´´´); Query1.Sql.Add(´AND Notificacao.OficioAno like ´+´´´´+´¬´+edit2.text+´¬´+´´´´);
por
Query1.Sql.Add(´Where Notificacao.OficioNum like :Param1´); Query1.Sql.Add(´AND Notificacao.OficioAno like :Param2´); Query1.ParamByName(´Param1´).AsString := Chr(39) + ´¬´ + Edit1.text + ´¬´ + Chr(39); Query1.ParamByName(´Param2´).AsString := Chr(39) + ´¬´ + Edit2.text + ´¬´ + Chr(39); ....
e faz um teste! :wink:
27/03/2006
Paulocesar1301
QuotedStr(´¬´ + Trim(edit2.text) + ´¬´)
27/03/2006
Aroldo Zanela
Use QuotedStr também para o nomes das tabelas entre aspas, ou então remova-as (somente dos nomes de tabelas) e feche todos os parenteses dentro da instrução SQL.
27/03/2006
Naelson
Fiz os acertos, beleza, resolveu o problema do ´Where´, agora é com parametros, veja:
[color=red:bb16e583f7]Query1: Parametro ´Param1´ não encontrado[/color:bb16e583f7]
Como eu faço para passar parametros para a Query, pois pelo Object Inspector não consigo.
Podem me ajudar novamente.
um abraço
Naelson
Query1.Close;
Query1.SQL.Clear;
Query1.Sql.Add(´SELECT Notificacao.OficioNum, Notificacao.OficioAno, Notificacao.OrgaoDescricao, Notificacao.Cargo, Notificacao.Titulo, Notificacao.SubTitulo, Notificacao.Notificado, Oficio.Processo, Oficio.Nome´);
Query1.Sql.Add(´FROM ´Notificacao.DB´ Notificacao´);
Query1.Sql.Add(´ INNER JOIN ´Oficio.DB´ Oficio´);
Query1.Sql.Add(´ ON (Notificacao.OficioNum = Oficio.OficioNum)´);
Query1.Sql.Add(´ AND (Notificacao.OficioAno = Oficio.OficioAno)´);
Query1.Params.ParamByName(´Param1´).AsString := Chr(39) + ´¬´ + Edit1.text + ´¬´ + Chr(39);
Query1.Params.ParamByName(´Param2´).AsString := Chr(39) + ´¬´ + Edit2.text + ´¬´ + Chr(39);
Query1.Sql.Add(´Where Notificacao.OficioNum like :Param1´);
Query1.Sql.Add(´AND Notificacao.OficioNum like :Param2´);
Query1.Open;
27/03/2006
Paullsoftware
Query1.Close; Query1.SQL.Clear; Query1.Sql.Add(´SELECT Notificacao.OficioNum, Notificacao.OficioAno, Notificacao.OrgaoDescricao, Notificacao.Cargo, Notificacao.Titulo, Notificacao.SubTitulo, Notificacao.Notificado, Oficio.Processo, Oficio.Nome´); Query1.Sql.Add(´FROM "Notificacao.DB" Notificacao´); Query1.Sql.Add(´ INNER JOIN "Oficio.DB" Oficio´); Query1.Sql.Add(´ ON (Notificacao.OficioNum = Oficio.OficioNum)´); Query1.Sql.Add(´ AND (Notificacao.OficioAno = Oficio.OficioAno)´); Query1.Params.ParamByName(´Param1´).AsString := Chr(39) + ´¬´ + Edit1.text + ´¬´ + Chr(39); Query1.Params.ParamByName(´Param2´).AsString := Chr(39) + ´¬´ + Edit2.text + ´¬´ + Chr(39); Query1.Sql.Add(´Where Notificacao.OficioNum like :Param1´); Query1.Sql.Add(´AND Notificacao.OficioNum like :Param2´); Query1.Open;
deveria ser assim:
Query1.Close; Query1.SQL.Clear; Query1.Sql.Add(´SELECT Notificacao.OficioNum, Notificacao.OficioAno, Notificacao.OrgaoDescricao, Notificacao.Cargo, Notificacao.Titulo, Notificacao.SubTitulo, Notificacao.Notificado, Oficio.Processo, Oficio.Nome´); Query1.Sql.Add(´FROM "Notificacao.DB" Notificacao´); Query1.Sql.Add(´ INNER JOIN "Oficio.DB" Oficio´); Query1.Sql.Add(´ ON (Notificacao.OficioNum = Oficio.OficioNum)´); Query1.Sql.Add(´ AND (Notificacao.OficioAno = Oficio.OficioAno)´); Query1.Sql.Add(´Where Notificacao.OficioNum like :Param1´); Query1.Sql.Add(´AND Notificacao.OficioNum like :Param2´); Query1.Params.ParamByName(´Param1´).AsString := Chr(39) + ´¬´ + Edit1.text + ´¬´ + Chr(39); Query1.Params.ParamByName(´Param2´).AsString := Chr(39) + ´¬´ + Edit2.text + ´¬´ + Chr(39); Query1.Open;
ou então tente assim:
Query1.Params[0]AsString := Chr(39) + ´¬´ + Edit1.text + ´¬´ + Chr(39); Query1.Params.[1].AsString := Chr(39) + ´¬´ + Edit2.text + ´¬´ + Chr(39);
você pode até substituir o like por starting with assim:
Query1.Sql.Add(´ Where Notificacao.OficioNum starting with :Param1 ´); Query1.Sql.Add(´ AND Notificacao.OficioNum starting with :Param2 ´); Query1.Params[0]AsString := Edit1.text; Query1.Params.[1].AsString := Edit2.text;
Clique aqui para fazer login e interagir na Comunidade :)