[firebase-br] Variavel de pesquisa

André Conrado acf em andreconrado.net
Seg Jul 23 14:59:10 -03 2012


vc precisa entender como o containing 'trabalha'. Ele procura
substring, então já que se trata de uma lista de parâmetro, os mesmos
precisam ter características semelhantes e a principal delas, no seu
caso, é o quantidade de caracteres. Essa lista não funciona mesmo. Por
que:

'11,111,112' CONTAINING '11' está contido nos três 'parâmetros';

A formatação da relação é importante. Nos seu caso Ano e Mês tem que
está com as mesmas quantidades de caracteres. Tanto na string
concatenada quanto nos campos que estão sendo comparados.

Abçs

Em 23 de julho de 2012 14:16, Matheus(GMAIL) <matheus.jgs em gmail.com> escreveu:
> Não deu totalmente certo.
>
> Exemplo:
> Select * from produto
> Where :lista containing pkproduto
>
> Lista = 11,111,112
>
> Resultado:
> 11,12,111,112...
>
> Nao sei se tem algum equivoco na minha forma de pensar acho que não vai
> funcionar o containing para isso não.
>
> -----Original Message-----
> From: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br]
> On Behalf Of André Conrado
> Sent: segunda-feira, 23 de julho de 2012 13:51
> To: FireBase
> Subject: Re: [firebase-br] Variavel de pesquisa
>
> Esse assunto já foi discutido na lista.
>
> O comando CONTAINING funciona exatamente do jeito que ele precisa.
>
> Concatene os valores numa string e passe-a como parâmetro que vai funcionar.
>
> Abçs.
>
> Em 23 de julho de 2012 11:52, Emerson Sanches
> <emerson.sanches em gmail.com> escreveu:
>> Matheus é exatamente isso que estou querendo...............alguma forma de
>> passar "vários" valores pra dentro da clausula IN.
>> De uma forma deselegante eu consegui fazer isso, eu poderia criar varias
>> "variáveis", tipo VAR1, VAR2, VAR3, VAR4...etc, e passar os parâmetros pra
>> essas variáveis. Isso funciona bem quando sabemos o
>> numero máximo de variáveis que teremos dentro do IN, mas quando não
> sabemos
>> esse numero, ai o bicho pega.............e é exatamente nessa situação que
>> me encontro agora.........rs.
>> Andre, obrigado pela resposta assim mesmo.............
>>
>>
>> Emerson Sanches
>> Analista de Sistemas
>>
>>
>> Em 23 de julho de 2012 11:43, Matheus(GMAIL)
> <matheus.jgs em gmail.com>escreveu:
>>
>>> O Comando containing acredito que não seja o que ele está procurando.
>>> Eu efetuei alguns testes e não consegui chegar a uma solução plausivel.
>>>
>>> Andre, pelo que eu percebi o que ele deseja eu também ja tive problemas
> com
>>> isso, porem eu resolvi em questão da programação mesmo.
>>>
>>> Que por exemplo
>>>
>>> O sql que deveria ficar no final:
>>>
>>> Select * from produto
>>> Where pkproduto in(12,13,14,15);
>>>
>>> Mas de uma forma que ele possa passar o 12,13,14,15 como parametro.
>>>
>>> Select * from produto
>>> Where pkproduto in(:listapk);
>>>
>>> Eu vou tentar fazer mais alguns testes par aver se acho a solução, se
>>> alguem
>>> tiver uma forma para fazer isso também estou interessado na resolução.
>>>
>>> -----Original Message-----
>>> From: lista-bounces em firebase.com.br
> [mailto:lista-bounces em firebase.com.br]
>>> On Behalf Of André Conrado
>>> Sent: segunda-feira, 23 de julho de 2012 11:38
>>> To: FireBase
>>> Subject: Re: [firebase-br] Variavel de pesquisa
>>>
>>> O comando IN não funciona desta forma. Ele precisa receber um lista de
>>> valores para efetuar uma pesquisa e o que vc está fazendo é passar
>>> apenas um valor. Uma string contendo uma relação de valores continua
>>> sendo apenas UMA STRING.
>>>
>>> O que vc precisa é do comando CONTAINING. Este verifica que uma
>>> determinada string CONTEM outra.
>>>
>>> Ex.:
>>>
>>> 'André Conrado Ferreira' CONTAINING 'Conrado'.
>>>
>>> Isto significa que vc terá que inverter a posição dos dados.
>>>
>>> Abçs
>>>
>>> Em 23 de julho de 2012 10:59, Emerson Sanches
>>> <emerson.sanches em gmail.com> escreveu:
>>> > Bom dia pessoal da lista, estou tentando fazer um select como o
> mostrado
>>> > abaixo:
>>> >
>>> >
>>> > SELECT  MinhaTabela.Data
>>> >                    DATA,
>>> >          EXTRACT(YEAR FROM  MinhaTabela.Data )
>>> >            ANO,
>>> >          EXTRACT(MONTH FROM  MinhaTabela.Data )
>>> >          MES,
>>> >          EXTRACT(YEAR FROM  MinhaTabela.Data )||
>>> >          EXTRACT(MONTH FROM  MinhaTabela.Data )
>>> >           ANO_MES
>>> > FROM     MinhaTabela
>>> > WHERE    EXTRACT(YEAR FROM  MinhaTabela.Data )||
>>> >          EXTRACT(MONTH FROM  MinhaTabela.Data ) IN ('20127','20126')
>>> >
>>> > Quando coloco a clausula IN no where e completo ela manualmente,
> conforme
>>> > mostrado acima, com os valores 20127 e 20126 retorna os valores
>>> normalmente.
>>> > Mas se tento fazer como abaixo:
>>> >
>>> > SELECT  MinhaTabela.Data
>>> >                    DATA,
>>> >          EXTRACT(YEAR FROM  MinhaTabela.Data )
>>> >            ANO,
>>> >          EXTRACT(MONTH FROM  MinhaTabela.Data )
>>> >          MES,
>>> >          EXTRACT(YEAR FROM  MinhaTabela.Data )||
>>> >          EXTRACT(MONTH FROM  MinhaTabela.Data )
>>> >           ANO_MES
>>> > FROM     MinhaTabela
>>> > WHERE    EXTRACT(YEAR FROM  MinhaTabela.Data )||
>>> >          EXTRACT(MONTH FROM  MinhaTabela.Data ) IN (:ANO_MES)
>>> >
>>> > Estou colocando uma variável dentro da clausula IN.
>>> > Se passar um valor unitário a esta variável, como 20127, funciona
>>> > perfeitamente, mas eu queria passar uma combinação de valores, por
>>> exemplo:
>>> >
>>> > :ANO_MES = '20127','20126,'20125'
>>> >
>>> > ai não funciona.
>>> > A pergunta é, será que não é possível fazer isso que estou querendo? Ou
>>> sou
>>> > eu que não estou fazendo certo? Não sei se fui claro..........mas mesmo
>>> > assim, obrigado pela atenção.
>>> >
>>> > PS: Essa pratica não funciona nem o IBExpert nem na aplicação (delphi),
>>> > quando tento passar os parâmetros.
>>> >
>>> >
>>> >
>>> >
>>> > Emerson Sanches
>>> > Analista de Sistemas
>>> > ______________________________________________
>>> > 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
>>>
>>> ______________________________________________
>>> 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
>>>
>>>
>>> ______________________________________________
>>> 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
>>>
>> ______________________________________________
>> 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
>
> ______________________________________________
> 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
>
>
> ______________________________________________
> 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