[firebase-br] RES: RES: RES: where com lista de valores

Carlos Wilson cwfsa1 em gmail.com
Sáb Jun 5 17:03:51 -03 2010


Zottis, na verdade o que voce tá falando pra eu fazer, já to fazendo só 
não tá dando certo devido a quantidade de registros. Mas Obrigado assim 
mesmo.
José Aparecido, valeu pela dica da tabela temporária, vou me aprofundar 
mais sobre isso.

[ ]'s
Carlos Wilson.

Jose Aparecido da Silva escreveu:
> O problema é que a string a ser passada para o comando sql tem um limite que
> não me recordo qual é.
> Dá uma olhada em CREATE GLOBAL TEMPORARY TABLE.
> Eu já fiz isso e usei uma tabela temporária no FB para isso.
> A tabela tem um único campo que é o identificador da outra tabela 
> Eu fiz assim: Populei a tabela temporária com os registros que eu havia
> separado e depois eu fiz o select ou com in ou com left join. 
> Ex:
> 1. Select t.ID, c.NOME, c.ENDERECO, etc from TABELATMP t
> Left join CLIENTES c on t.ID = c.ID
>
> 2. select c.ID, c.NOME, c.ENDERECO, etc from CLIENTES c
> Where c.ID in (select t.ID from TABELATMP t where t.ID = c.ID)
>
> Fica aí a dica.
>
> [ ]'s
> Jose Aparecido da Silva
> Fasystem
>
>
> -----Mensagem original-----
> De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
> nome de Zottis
> Enviada em: sábado, 5 de junho de 2010 12:39
> Para: 'FireBase'
> Assunto: [firebase-br] RES: RES: where com lista de valores
>
> Então, você pode Fazer de Duas Formas, como falei anteriormente:
> A primeira, vc Faz um While not......
> No primeiro dataset para varrer o resultado e joga os códigos dos clientes
> em uma varialvel,
> Exemplo: 
> Var Codigos; Integer;
>
> Codigos := códigos + QryClienteCodCliente.value + ', ';
> Isso retornará 1,2,3 que você pode passar no segundo dataset dentro da
> cláusula "IN"
>
> Ou fazer um outro dataset para pegar a lista de valores do primeiro
>
> Monta o SQL na parte do where da mesma forma que o primeiro 
> Mas na parte do select faz assim:
>
> Select  LIST(Clientes.CodCliente, ',') AS CodCliente
>
> Isso te retornará assim:
>
> 1,2,3 
>
> Daí vc consegue passar para o próximo Dataset na cláusula "IN"
>
> Espero que ajude, qualquer coisa, segunda feira me Fala.
>
> Até mais, e bom Final de Semana.
>  
>
> -----Mensagem original-----
> De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
> nome de Carlos Wilson
> Enviada em: sábado, 5 de junho de 2010 12:07
> Para: FireBase
> Assunto: Re: [firebase-br] RES: where com lista de valores
>
> Obrigado pelo seu comentário mas eu realmente não entendi o que voce 
> quis dizer, ou acho que voce não entendeu o que quero.
> exemplo:
> em um dataset depois do usuário ter feitos todas as opções de filtragem 
> possivel, resultou em:
> QryCliente
> Codcliente          Nome
> ===============================
> 1                        Carlos
> 2                        Manoel
> 3                        Júlia
>
> Aí eu completo a sql do segundo dataset com um laço que vai pegando os 
> codigos do 1º dataset:
> o que me resulta em ...where codcliente IN (1,2,3);
>
> Funciona que é uma beleza mas para poucos registros se o primeiro 
> dataset me retornar 3000 clientes dá pau.
>
> Pergunto: O firebird possui outro comando para comparação de valores que 
> aceite MUITOS valores???
>
> Obrigado.
>
> Carlos Wilson
>
> Zottis escreveu:
>   
>> Faz um list com os parametros da primeira tela, ele te retornará o que vc
>> quer,
>> Ou ainda faz um while not na primeira tela e joga em uma variável, antes
>>     
> de
>   
>> chamar a segunda tela
>> E passa o parâmetro da variavel 
>>
>> -----Mensagem original-----
>> De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br]
>>     
> Em
>   
>> nome de Carlos Wilson
>> Enviada em: sábado, 5 de junho de 2010 09:25
>> Para: FireBase
>> Assunto: Re: [firebase-br] where com lista de valores
>>
>> É tipo assim quero fazer um relatório de venda dos clientes que foram 
>> selecionados numa outra tela.
>> QryRelatorio.Close;
>> QryRelatorio.Sql.Clear;
>> QryRelatorio.Sql.Add(SQL);
>> QryRelatorio.SQL.ADD( 'where codcliente in (' );
>> Qryclientes.first;
>> while not QryClientes.EOF do
>> begin
>>    QryRelatorio.SQL.ADD( QryClientesCODCLIENTE.AsString + ',' );
>>    QryClientes.Next;
>> end;
>> QryRelatorio.Open;
>>
>> para poucos clientes funciona muito bem, mas quando é muitos clientes, 
>> aparece uma mensagem "Dinamic SQL Error" devido a limitação do comando IN
>> existe uma alternativa pra isso?
>>
>> Garto.
>>
>> Carlos Wilson.
>>
>> Alysson Azevedo escreveu:
>>   
>>     
>>> exite o comando "exists"
>>> mas posta aew mais ou menos oque vc precisa...
>>> alguem vai saber te ajudar...
>>> --
>>>
>>> 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 4 de junho de 2010 22:15, Carlos Wilson <cwfsa1 em gmail.com> escreveu:
>>>
>>>   
>>>     
>>>       
>>>> Boa noite,
>>>>
>>>> Estou fazendo um select com base nos valores de outro Dataset. Fiz um
>>>>       
>>>>         
>> while
>>   
>>     
>>>> para buscar os valores do dataset e acrescentar uma lista de valores
>>>>         
> para
>   
>>>> ser usada em conjunto com "where in". porém o comando "in"  possui um
>>>>       
>>>>         
>> limite
>>   
>>     
>>>> de valores que pode ser passado. existe uma alternativa ao comando in?
>>>>
>>>> Obrigado,
>>>>
>>>> Carlos Wilson
>>>> Delphi+MDO+Firebird 2.1
>>>>
>>>> ______________________________________________
>>>> 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
>> Nenhum vírus encontrado nessa mensagem recebida.
>> Verificado por AVG - www.avgbrasil.com.br 
>> Versão: 9.0.829 / Banco de dados de vírus: 271.1.1/2919 - Data de
>> Lançamento: 06/05/10 03:25:00
>>
>>
>> ______________________________________________
>> 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
> Nenhum vírus encontrado nessa mensagem recebida.
> Verificado por AVG - www.avgbrasil.com.br 
> Versão: 9.0.829 / Banco de dados de vírus: 271.1.1/2919 - Data de
> Lançamento: 06/05/10 03:25:00
>
>
> ______________________________________________
> 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