Consulta SQL - Parâmetros composto
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.
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
Curtidas 0
Respostas
Sandra
29/06/2005
Valdir,
Acredito que a SQL está procurando pelo valor 51,59.
Acredito que a SQL está procurando pelo valor 51,59.
GOSTEI 0
Valdirdill
29/06/2005
É 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?
Mas como eu poderia passar esse parâmetro composto para a Query, ou seja, como dois ou mais valores para buscar?
GOSTEI 0
Sandra
29/06/2005
Você quer buscar o que, exatamente: produto com código entre 51 e 59?
GOSTEI 0
Valdirdill
29/06/2005
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?
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?
GOSTEI 0
Sandra
29/06/2005
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.
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.
GOSTEI 0
Emerson Nascimento
29/06/2005
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;
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;
GOSTEI 0
Emerson Nascimento
29/06/2005
só uma pergunta:
porque você manipula o SQLDataSet1 e o ClientDataSet1? bastaria manipular o ClientDataset1.
porque você manipula o SQLDataSet1 e o ClientDataSet1? bastaria manipular o ClientDataset1.
GOSTEI 0