[firebase-br] OFF TOPIC select com In

Alysson Gonçalves de Azevedo agalysson em gmail.com
Seg Out 25 16:52:42 -03 2010


eu nunca consegui uma boa select q use IN e paramentros...
meu chute é que o motivo eh a forma que o delphi trata parametros do tipo
string

supondo q o parametro esta preenchido com a palavra *jose* (sem apostrofos)

numa query comum, where nome = :nome
o delphi interpreta assim: where nome = *'jose'*  (o delphi coloca
apostrofos automaticamente)

agora, imagine q o parametro esta preenchido com *'10/2010', '11/2010',
'12/2010', '01/2011', '02/2012'* (ja com os apostrofos)
na sua query where infe_dt_recarga in (:wmeses)
o delphi interpreta assim: 'where nome = *'**'**'**10/2010**'**'**, **'**'**
11/2010**'**'**, **'**'**12/2010**'**'**, **'**'**01/2011**'**'**, **'**'**
02/2012**'**'**'* (o delphi coloca apostrofos externos e duplica os internos
automaticamente, criando não um lista, mas sim um grande texto)

minha recomendação é vc coloque ' where infe_dt_recarga in ( '  + wmeses + '
) '

ve se funciona


Alysson Gonçalves de Azevedo
(11) 8491-7730

(\(''^_^ )/)

"Pobre vive dizendo que não tem nada, mas quando vem a enchente, ele sai
gritando: -Perdi tudo!!!"



Em 25 de outubro de 2010 15:43, NextCorp <nextcorp em nextcorp.com.br>escreveu:

> Caros colegas
>
> Delphi 5 com Firebird 2.1
>
> Estou fazendo um select onde tenho o where desta maneira:
>
> SQL.Add('where (infs_cli_codigo = :wcodigo) and (infe_dt_recarga In
> (:wmeses))');
> Params[0].AsInteger:= wresult_i;
> Params[1].AsString:= wparam;
>
> meu problema está na passagem dos parâmetros para o operador IN.
>
> mesmo verificando em tempo de execução que o parâmetro está recebendo os
> meses assim:
>
>  '10/2010', '11/2010', '12/2010', '01/2011', '02/2012'
>
> ele só me retorna no relatório o primeiro mês, ou seja, '10/2010' mesmo
> tendo os demais meses.
>
> No ib expert executa normalmente passando os 5 meses e retornando todos os
> meses encontrados do cliente.
>
> OBS: o campo mês no banco e uma string, não um campo date.
>
> já tentei de todas as formas, mas não estou conseguindo ver onde estou
> errando nesta passagem de parâmetro. Se alguém puder dar uma olhada,
> agradeço.
>
> Washington
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista