Duvida como usar ParamByName para esse tipo d parametro

29/11/2004

0

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

Responder

Posts

29/11/2004

Fsflorencio

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.


Responder

30/11/2004

Rodolpho123

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


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar