[firebase-br] Variavel de pesquisa

Jean Alysson jeanpapa em gmail.com
Qui Jul 26 07:39:27 -03 2012


Ok tudo bem.

Jean Alysson

Em 25 de julho de 2012 14:15, André Conrado <acf em andreconrado.net> escreveu:
> Jean, não disse que a ideia está errada, eu quis dizer que são duas
> formas diferentes de fazer a mesma coisa. Você também está correto com
> sua dica.
>
> Abçs.
>
> Em 25 de julho de 2012 12:19, Jean Alysson <jeanpapa em gmail.com> escreveu:
>> André,
>>
>> a minha ideia foi, montar uma string no Delphi com os dados
>> concatenados de ANO e MES (tratando pelo Delphi) e enviar como
>> parametro para a clausula IN como mencionei na dica anterior, se não
>> for este o problema, ignore por favor.
>>
>> Jean Alysson
>>
>> Em 25 de julho de 2012 11:46, André Conrado <acf em andreconrado.net> escreveu:
>>> Mas Jean, isso é tipo aquela história : "...Fala, mas fala
>>> diferente...", isto é:
>>>
>>> POSITION('#'||CAST(ped.id_cliente as VARCHAR(100))||'#' in '#10##11##12#' )>0
>>>
>>> é igual a
>>>
>>> '#10##11##12#' CONTAINING '#'||CAST(ped.id_cliente as VARCHAR(100))||'#'
>>>
>>> como eu já tinha dito antes.
>>>
>>> Abçs
>>>
>>> Em 25 de julho de 2012 08:39, Jean Alysson <jeanpapa em gmail.com> escreveu:
>>>> Solução para passar IN como parametro: (descoberta por Paulo Oliveira, da lista)
>>>>
>>>> select ped.*
>>>> from pedidos ped
>>>> where POSITION('#'||CAST(ped.id_cliente as VARCHAR(100))||'#' in
>>>> '#10##11##12#' )>0;
>>>>
>>>> aceita 100 digitos como parametro
>>>>
>>>> onde passo a string  #10##11##12#' como parametro
>>>>
>>>> Achei o aviso abaixo no site:
>>>> http://www.firebirdsql.org/refdocs/langrefupd21-intfunc-position.html
>>>>
>>>> Notice: A bug in Firebird 2.1–2.1.3 causes POSITION to always return 1
>>>> if substr is the empty string. This is fixed in 2.1.4.
>>>>
>>>> Jean Alysson
>>>>
>>>> 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
>>>>
>>>>
>>>>
>>>> --
>>>> Atenciosamente
>>>> Jean Alysson Ambrosio
>>>>
>>>> ______________________________________________
>>>> 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
>>
>>
>>
>> --
>> Atenciosamente
>> Jean Alysson Ambrosio
>>
>> ______________________________________________
>> 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



-- 
Atenciosamente
Jean Alysson Ambrosio




Mais detalhes sobre a lista de discussão lista