Parâmetros em SQL - cláusula LIKE???

18/08/2004

Olá pessoal,
seguinte, tenho este código:
with ADOQuery1 do
begin
 SQL.Text:= ´SELECT * FROM tb_profe WHERE Nome LIKE :nome¬´;
 Parameters.ParametersByName(´nome´).Value := Edit1.Text;
 Open;
end;


so q está dando erro na consulta, pois (ERRO: parametro nome não encontrado) creio que não estou sabendo concatenar a Cláusla LIKE com o parâmetro, alguem poderia me dar uma luz?

Obrigado!


Rockbilly

Respostas

18/08/2004

Nildo

with ADOQuery1 do 
begin 
   SQL.Text := ´SELECT * FROM tb_profe WHERE Nome LIKE :nome ´´¬´´´; 
Parameters.ParametersByName(´nome´).Value := Edit1.Text; 
   Open; 
end;


Use CTRL+C e CTRL+V porque o jogo de aspas é estranho na visualização, mas agora está correto.


Responder Citar

18/08/2004

Rockbilly

nildo, obrigado por postar... mas está dando erro:

Incorrect syntax next ´¬" Process stopped


o q pode ser, tente colocar mais uma aspa simples, na esquerda e direita, mas mesmo assim continuou dando erro, pode me ajudar?


Responder Citar

18/08/2004

Vinicius2k

Colega,

Na verdade vc tem que contenar o ´¬´ com valor do parametro e não com o parametro...
with ADOQuery1 do 
  begin 
    SQL.Text:= ´SELECT * FROM tb_profe WHERE Nome LIKE :nome´; 
    Parameters.ParametersByName(´nome´).Value := Edit1.Text + ´¬´; 
    Open; 
  end;


T+


Responder Citar

18/08/2004

Nildo

Tente assim:

SQL.Text := ´SELECT * FROM tb_profe WHERE Nome LIKE :nome [size=18:727274df49]+[/size:727274df49] ´´¬´´´;

É que eu uso o MySQL, e pode ser diferente :roll:


Responder Citar

18/08/2004

Otto

ao invez de parametros, pq nao tentar diretp??


SQL.Text:= ´SELECT * FROM tb_profe WHERE Nome LIKE "¬´ + edit1.text + ´¬"´;



:wink:


Responder Citar

18/08/2004

Rockbilly

Tente assim: SQL.Text := ´SELECT * FROM tb_profe WHERE Nome LIKE :nome [size=18:d8170bd2c1]+[/size:d8170bd2c1] ´´¬´´´; É que eu uso o MySQL, e pode ser diferente :roll:

pow nildo, era isso, vlw mesmo!!
grato tb vinicius!


Responder Citar

18/08/2004

Vinicius2k

Blz ! vc tem aí 3 formas de fazer e todas corretas... :wink:
Eu prefiro contatenar no valor do parametro, pq dependendo da condição eu coloco o ¬ antes, ou depois, ou antes e depois... mas é questão de escolha...
T+


Responder Citar

18/08/2004

Rockbilly

otto, vlw o toque... particularmente preferi por parametro pq é bom aprender desta forma, aproveitando o gancho, como q arrumo este código para incluir, pois tb está dando erro:
with ADOQuery1 do 
begin 
 SQL.Text:= ´INSERT INTO tabela VALUES(:nome,:endereco,:bairro,:cep)´; 
 Parameters.ParametersByName(´nome´).Value := Edit1.Text; 
 Parameters.ParametersByName(´endereco´).Value := Edit2.Text; 
 Parameters.ParametersByName(´bairro´).Value := Edit3.Text; 
 Parameters.ParametersByName(´cep´).Value := Edit4.Text; 
Open; 
end;


alguem pode me ajudar de novo, Obrigadão pessoal!


Responder Citar

18/08/2004

Nildo

SQL.Text:= ´INSERT INTO tabela VALUES( :nome , :endereco , :bairro , :cep )´;

separe os parametros de outros caracteres, com um espaço.
Se não funcionar, você deve setar o tipo do parametro como ftString.


Responder Citar

18/08/2004

Vinicius2k

Se a sua tabela só tiver estes 4 campos vc pode usar direto o Values senão teria que ser ... into tabela(campo1,campo2,...) values (param1,param2,...)

No mais, é só trocar o método Open, por ExecSQL... vc só usa Open, para instruções Select... Inserts, Updates, Deletes, DDL e DCL é ExecSQL...

T+


Responder Citar

18/08/2004

Rockbilly

Nildo e vinicius, blz? tentei suas dicas, mas me retorna o erro de:

ADOQuery1 parameter nome not found


o q poderia ser?

nildo, isso q vc falou ftstring, seria uma função a ser aplicada nos parametros? poderia me ajuda?

obrigado turma!


Responder Citar

18/08/2004

Rockbilly

Opa, coonsegui!! Vinicius, sua dica foi show de bola!
vlw tb nildo!

obrigadao!


Responder Citar