DUVIDA EM sql IN

SQL

Delphi

23/07/2018

select * from TAB_CLIE
WHERE
CODCLIE in (:para)

estou jogando no dellphi

ClientDataSet1.close;
ClientDataSet1.Params[0].AsString:= ''''''''1,4'''''''' ;
ClientDataSet1.open;


alguem ja fez usando parâmetro para dar certo ?
Marcos Cruz

Marcos Cruz

Curtidas 0

Melhor post

Fernando Duwe

Fernando Duwe

24/07/2018

Oi Marcos,

Não deveria haver problema para executar o seu código. Verifique primeiro se fixando os valores no SQL, a sua consulta retorna resultado.
Somente, ao passar o parâmetro, pode passar com as aspas simples mesmo.

ClientDataSet1.Params[0].AsString:= '1,4';
GOSTEI 2

Mais Respostas

Marcos Cruz

Marcos Cruz

23/07/2018

foi com aspa simples e que nao hora de salvar aqui oclocou assim

mas da erro de conversao .. o sql entende que é integer so que no paramentro do cliendaset eu coloquie que é string
GOSTEI 0
Roberto Wutke

Roberto Wutke

23/07/2018

Na verdade vc não consegue passar um conjunto de strings como parametro pro sql ex: ('a', 'b', 'c' ) o sql não vai reconhecer desta forma. Neste caso o que te recomendo é fazer um stringReplace, trocando uma palavra chave, pelo parametro que quer usar.

tipo
select * from medico where med_tratamento in( #Tratamento );

este seria o código dentro da sua query, assim vc faria o seguinte.
ClientDataSet1.close;
ClientDataSet1.CommandText := StringReplace(ClientDataSet1.CommandText, #Tratamento, ' ''a'', ''b'', ''c,'' ');
ClientDataSet1.open;

acredito que isso vá te resolver.

bons códigos.
GOSTEI 0
João Filho

João Filho

23/07/2018

Olá Marcos bom dia,

Acredito que isso irá resolver seu problema, concatene seus valores utilizando o QuotedStr que ele já ira tratar de colocar as aspas duplas para você ("), é interessante também você criar uma função para te retornar estes dados tratados. Segue abaixo:

ClientDataSet1.close;
ClientDataSet1.Params[0].AsString:= QuotedStr('1') + ',' + QuotedStr('4'));
ClientDataSet1.open;



Atenciosamente, espero ter ajudado.
GOSTEI 0
POSTAR