Duvida como usar ParamByName para esse tipo d parametro

Firebird

29/11/2004

select SAIDA.CODLOJA,
       SAIDA.DATAHORA,
       SAIDA.TIPO
       SAIDA.VALOR
from SAIDA
where SAIDA.CODLOJA in (1,2,3,4)


Observando a parte criterios eu gostaria de saber como passa esse argumentos com ParamByName, Conforme Exemplo abaixo :

select SAIDA.CODLOJA,
       SAIDA.DATAHORA,
       SAIDA.TIPO
       SAIDA.VALOR
from SAIDA
where SAIDA.CODLOJA in :CodigoLojas


e no delphi :

ibquery.ParamByName(´CodigoLojas´).Valeu := ´(1,2,3,4)´;
ibquery.Open;

Vamos enteder... eu tenho q passar uma linha com varios codigos q serviram para fazer o filtro na clasula where.. porem como passar ele pelo delphi ? comforme a linha em pascal acima... ou isso nao é possivel ? realmente eu tenho q modificar a String do SQL. e nao posso utilizar a mesma parametrizada.... ´Estou usando IBX... e por ventura essa limitação existe na DBX tb ?´



grato... :shock:[/b][color=darkred:680808df22][/color:680808df22][color=darkred:680808df22][/color:680808df22]


Kristian

Kristian

Curtidas 0

Respostas

Fsflorencio

Fsflorencio

29/11/2004

Amigo,
Não conheço nenhuma forma de se fazer isto, mas se for o caso, vc pode fazer assim:

select SAIDA.CODLOJA,
SAIDA.DATAHORA,
SAIDA.TIPO
SAIDA.VALOR
from SAIDA
where SAIDA.CODLOJA in (SELECT COD_LOJA FROM LOJAS WHERE ...)

se não for o caso, vc tem que passar o script completo com os valores igual mencionado separado por virgulas sem parâmetros.


GOSTEI 0
Rodolpho123

Rodolpho123

29/11/2004

ibquery.ParamByName(´CodigoLojas´).Valeu := ´(1,2,3,4)´; ibquery.Open; Vamos enteder... eu tenho q passar uma linha com varios codigos q serviram para fazer o filtro na clasula where.. porem como passar ele pelo delphi ? comforme a linha em pascal acima... ou isso nao é possivel ? grato... :shock:[/b][color=darkred:a66de28669][/color:a66de28669][color=darkred:a66de28669][/color:a66de28669]


Isso é possível sim, mas se a sua string de parâmetros for muito grande, vai lhe gerar uma exceção. Ex:

Suporta
ibquery.ParamByName(´CodigoLojas´).Valeu := ´(1,2,3,4)´;


Não suporta
ibquery.ParamByName(´CodigoLojas´).Valeu := ´(1,2,3,4,5,6,7,8,...200)´;


Mas se vc subescrever sua qry, a mesma vai rodar perfeitamente, ex:

ibquery.SQL.Strings[5] := ´where SAIDA.CODLOJA in (1,2,3,4,5,6,7,8,...200)´;

Onde ´5´ se refere ao índice da linha que vc está subescrevendo


GOSTEI 0
POSTAR