Fórum Consulta SQL - Parâmetros composto #286476

29/06/2005

0

Por gentiliza, analise as rotinas abaixo e veja se podes me ajudar.

Var
VListaCodigos : String;

//assim funciona. lista o produto de código 51
begin

VListaCodigos := ´51´;

SQLDataSet1.Close;
ClientDataSet1.Close;
SQLDataSet1.CommandText := ´SELECT * FROM PRODUTOS WHERE CODIGO IN (:VCodigos)´;
SQLDataSet1.Params[0].Value := VListaCodigos;
ClientDataSet1.Open;
end;

//assim funciona. lista o produto de código 59
begin

VListaCodigos := ´59´;

SQLDataSet1.Close;
ClientDataSet1.Close;
SQLDataSet1.CommandText := ´SELECT * FROM PRODUTOS WHERE CODIGO IN (:VCodigos)´;
SQLDataSet1.Params[0].Value := VListaCodigos;
ClientDataSet1.Open;
end;

//mas assim funciona. Se tiver mais de um codigo na lista, nao mostra nada.
begin

VListaCodigos := ´51,59´´;

SQLDataSet1.Close;
ClientDataSet1.Close;
SQLDataSet1.CommandText := ´SELECT * FROM PRODUTOS WHERE CODIGO IN (:VCodigos)´;
SQLDataSet1.Params[0].Value := VListaCodigos;
ClientDataSet1.Open;
end;

O que estou fazendo de errado? Delphi 7 Firebird 1.5
Obrigado.


Valdirdill

Valdirdill

Responder

Posts

29/06/2005

Sandra

Valdir,

Acredito que a SQL está procurando pelo valor 51,59.


Responder

Gostei + 0

29/06/2005

Valdirdill

É o que eu acho também.
Mas como eu poderia passar esse parâmetro composto para a Query, ou seja, como dois ou mais valores para buscar?


Responder

Gostei + 0

29/06/2005

Sandra

Você quer buscar o que, exatamente: produto com código entre 51 e 59?


Responder

Gostei + 0

29/06/2005

Valdirdill

Não.

Esses códigos - 51 e 59 - são só um exemplo hipotético. É o usuário que vai informar o(s) código(s) do produto. Poder ser um, dois , dez,...
Preciso listar todos os produtos que tenham código igual aos códigos informados pelo usuário.
Entendeu?


Responder

Gostei + 0

29/06/2005

Sandra

Entendi sim, o que gostaria de implementar. Vi seu outro tópico ([url=http://forum.clubedelphi.net/viewtopic.php?t=64776]Consulta SQL - Mais de um dado[/url]) relacionado ao mesmo assunto. :D

Outra coisa, vai exibir no ClienteDataSet, certo?

Agora, como implementar, deixe-me pensar como faria num caso desses (não prometo conseguir). Ou então, aguardar que um outro colega do fórum também possa auxiliar na busca por uma solução.


Responder

Gostei + 0

29/06/2005

Emerson Nascimento

quando você passa uma lista, não é possível passá-la como parâmetro.
será necessário concatenar a instrução. algo como:

VListaCodigos := QuotedStr(´51´)+´,´+QuotedStr(´59´);

ClientDataSet1.Close;
ClientDataSet1.CommandText := ´SELECT * FROM PRODUTOS WHERE CODIGO IN (´+VListaCodigos+´)´;
ClientDataSet1.Open;


Responder

Gostei + 0

29/06/2005

Emerson Nascimento

só uma pergunta:
porque você manipula o SQLDataSet1 e o ClientDataSet1? bastaria manipular o ClientDataset1.


Responder

Gostei + 0

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

Aceitar