[firebase-br] Select IN

Zottis zottissistemas em brturbo.com.br
Seg Maio 25 15:48:53 -03 2009


Se vc usar algum componente para acesso ao banco, vc terá que montar o SQL
mais ou menos assim;

(Espero que ajude).

procedure TBuscaprodutosSelecionados.BTNBuscarClick(Sender: TObject);
const
  texto = 'Select * from produtos where Codproduto in (%s)';
begin
  With ProdutosSelect do
    begin
       Close;
       SQL.Clear;
       Sql.Text :=Format(texto,[edit1.text]);
        Prepare;
       Open;
end;
end;


Zottis(TeamFB Users)

Zottis Sistemas - 2009 Ano XII
Programação Delphi/PHP/Firebird/MySQL

"Um homem só tem o direito de olhar
  a um outro de cima para baixo, quando
  vai ajuda-lo a levantar-se".
                   Gabriel Garcia Marquez
----- Original Message ----- 
From: "Mantovani" <daniloatm em gmail.com>
To: <lista em firebase.com.br>
Sent: Monday, May 25, 2009 3:26 PM
Subject: Re: [firebase-br] Select IN


> Sandro, obrigado pela ajuda,
>
> Seguinte, eu realmente preciso passar com um IN, vou explicar.
>
> Estou desenvolvendo um relatorio onde o usuario poderá selecionar na tela 
> quais frotas ele quer imprimir. Meu campo nrofrota é um string. Além do 
> problema da qtde de frota que ele pode selecionar, não estou conseguindo 
> passar como parametro para o sql varias string para formar o IN, problema 
> que eu resolveria se conseguisse jogar tudo em um tabela.
>
> No oracle eu conseguiria resolver o problema como descrevi e que é +- o 
> que vc disse, a função retorna tipo uma tabela virtual.
>
> O meu IN, seria +- isso ('A01','A02','B05'...)
>
> Espero ter consiguido explicar.
>
> "Sandro Souza" <escovadordebits em gmail.com> escreveu na mensagem 
> news:64d5939a0905251110k5510f4act8b200b3829f3405b em mail.gmail.com...
> Bom dia/tarde Mantovani.
>
> Grande Mantovani, para essa situação específica, você pode criar uma 
> stored
> procedure que lhe retorne uma "tabela virtual" que pode ser utilizada em 
> um
> SELECT como você deseja.
>
> Nessa situação de ser um intervalo fechado de valores, você poderia 
> utilizar
> o operador BETWEEN, ou seja, o seguinte exemplo:
>
> SELECT  *
> FROM     TABELA
> WHERE   CAMPO IN (   SELECT COLUMN_VALUE
>                                   FROM
> TABLE(cast(c5_ComplexIn.c5InTable('1,2,3,4 ATE 10000') as c5InStrTable)))
> Poderia se tornar:
>
> SELECT * FROM TABELA WHERE CAMPO BETWEEN 1 AND 10000
>
> Veja se você pode utilizar operadores simples para filtrar. Caso necessite
> realmente de uma stored procedure para isso, então posso lhe ajudar se 
> você
> especificar o que você informará e o que deseja que seja retornado.
>
> Espero ter ajudado mais que atrapalhado. :D
>
> 2009/5/25 Mantovani <daniloatm em gmail.com>
>
>> Boa tarde Pessoal,
>>
>> Já fiz essa pergunta anteriormente, mas não obtive resposta. Acho q como
>> estava no topido do Jhosef Marks muitos não viram.
>>
>> Bom, vamos lá, gostaria de saber se existe algum limite com relação
>> a qtde de informações dentro de um IN. Ex  IN (1,2,3,4 ATÉ 10000). No
>> Oracle
>> se não me engano, existe uma limitação, então eu tenho uma UDF, que pega 
>> o
>> conteudo dentro do parentes e insere em uma tabela temporaria.
>>
>> Exemplo Oracle:
>> SELECT  *
>> FROM     TABELA
>> WHERE   CAMPO IN (   SELECT COLUMN_VALUE
>>                                    FROM
>> TABLE(cast(c5_ComplexIn.c5InTable('1,2,3,4 ATE 10000') as c5InStrTable)))
>>
>> Gostaria de saber como tratar isto no firebird, se ja existe alguma udf
>> para
>> fazer isso. Estou usando firebird 2.5.
>>
>> Desde já Agradeço.
>> Mantovani.
>>
>>
>>
>>
>>
>> ______________________________________________
>> 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