em tempo, onde você sugere que eu coloque a chamada da função que vai ao banco ??? Stainle
--- Em qui, 14/5/09, berdam <berdamzi...@yahoo.com.br> escreveu: De: berdam <berdamzi...@yahoo.com.br> Assunto: Re: [delphi-br] ClientDataSet - Lookup Lento Para: delphi-br@yahoogrupos.com.br Data: Quinta-feira, 14 de Maio de 2009, 18:43 outro detalhe, procure não colocar no oncalcfields, chamadas de acesso ao banco, pois em todas alteração de todos os campos, que for feita nos campos do cds, eu disse todas, o método calcfields é chamado, isso pode ocasionar lentidão. Nivaldo Stainle escreveu: > > > entendi, mas o que deixa com a pulga atrás da orelha é que com a mesma > sintaxe e modelo, o BDE é mais rápido do que o CDS, é isto que não > entendo, estou trocando para algo melhor pelo que estou lendo e no > entanto estou vendo outra coisa na prática, ou seja, o que eu fazia > com o BDE não estou fazendo com BSS, ClientDataSet, etc.; pelo menos > com a mesma velocidade, acho que estou fazendo algo errado, é isto que > quero descobrir. > Stainle > > --- Em qua, 13/5/09, Evandro Siqueira <vans...@gmail. com > <mailto:vansiqq% 40gmail.com> > escreveu: > > De: Evandro Siqueira <vans...@gmail. com <mailto:vansiqq% 40gmail.com> > > Assunto: Re: [delphi-br] ClientDataSet - Lookup Lento > Para: delphi...@yahoogrup os.com.br <mailto:delphi- br%40yahoogrupos .com.br> > Data: Quarta-feira, 13 de Maio de 2009, 15:44 > > Stainle, > > Como vc informou qual o banco de dados, estou pressupondo que seja o > firebird e neste contexto, sugiro 2 coisas: > > 1) no Seleciona( select * from ... )... substitua o * pelo nome dos > campos que vc irá utilizar. Explicando: qd vc utiliza select * from > tabela, provoca um fetch all nela mesmo que a instrução contenha uma > cláusula where, o que tornará a consulta lenta, dependendo do tamanho da > tabela > > 2) se a lookup source contiver muitas linhas, sugiro procurar uma outra > alternativa, pq este componente é perfeito para aplicações desktop mas > em aplicações client server ou multicamadas, um lookup de muitas linhas > pode se tornar um pesadelo em termos de performance. > > stainle2003 escreveu: > > > > > > Boa Tarde, novamente pedindo ajuda. > > Estou gradativamente mudando meu sistema de BDE para Multicamadas, > > portando deixo de usar Query para usar ClientDataSet acessando a > > máquina que tem o BSS, o que acontece: > > Preciso fazer Lookup e sei que fica lento, então na Query(BDE) em > > OnCalcFields eu uso uma função que Seleciona(select * from ...) UMA > > dentre 4 chaves(00211001, 00211***, 0021****, 002*****), por exemplo, > > de uma tabela para que eu ache um valor para calcular o Preço Líquido > > por exemplo da tabela principal; acontece que no BDE(query) funciona > > com uma velocidade até que razoável, mas ao mudar para o > > ClientDataSet, fica uma calamidade, até mudei a função chamada no > > OnCalcFields para ao invés de SQL eu passei a usar da forma abaixo, > > mas mesmo assim não me alegrou, será que vou ter que continuar a usar > > o BDE, neste caso ??? > > procedure TDados.ver_desconto ; > > var > > wscodigo : string; > > begin > > wscodigo := Dados.CDSEstCodes. Value; > > > > Dados.CDSDes. Close; > > Dados.CDSDes. IndexName := 'DEFAULT_ORDER' ; > > Dados.CDSDes. Open; > > Dados.CDSDes. IndexFieldNames := 'nrolinha;grupo_ ini;sub_ini; nropeca'; > > Dados.CDSDes. SetKey; > > Dados.CDSDesNrolinh a.Value := StrToInt(copy( wscodigo, 1, 3)); > > Dados.CDSDesGrupo_ Ini.AsString := copy(wscodigo, 5, 1); > > Dados.CDSDesSub_ Ini.AsString := copy(wscodigo, 6, 1); > > Dados.CDSDesNropeca .AsString := copy(wscodigo, 8, 3); > > if Dados.CDSDes. GotoKey then > > begin > > Dados.CDSEstDescont o.Value := Dados.CDSDesDesco05 .Value; > > exit; > > end; > > Dados.CDSDes. IndexFieldNames := 'nrolinha;grupo_ ini;sub_ini; nropeca'; > > Dados.CDSDes. SetKey; > > Dados.CDSDesNrolinh a.Value := StrToInt(copy( wscodigo, 1, 3)); > > Dados.CDSDesGrupo_ Ini.AsString := copy(wscodigo, 5, 1); > > Dados.CDSDesSub_ Ini.AsString := copy(wscodigo, 6, 1); > > Dados.CDSDesNropeca .AsString := '***'; > > if Dados.CDSDes. GotoKey then > > begin > > Dados.CDSEstDescont o.Value := Dados.CDSDesDesco05 .Value; > > exit; > > end; > > Dados.CDSDes. IndexFieldNames := 'nrolinha;grupo_ ini;sub_ini; nropeca'; > > Dados.CDSDes. SetKey; > > Dados.CDSDesNrolinh a.Value := StrToInt(copy( wscodigo, 1, 3)); > > Dados.CDSDesGrupo_ Ini.AsString := copy(wscodigo, 5, 1); > > Dados.CDSDesSub_ Ini.AsString := '*'; > > Dados.CDSDesNropeca .AsString := '***'; > > if Dados.CDSDes. GotoKey then > > begin > > Dados.CDSEstDescont o.Value := Dados.CDSDesDesco05 .Value; > > exit; > > end; > > Dados.CDSDes. IndexFieldNames := 'nrolinha;grupo_ ini;sub_ini; nropeca'; > > Dados.CDSDes. SetKey; > > Dados.CDSDesNrolinh a.Value := StrToInt(copy( wscodigo, 1, 3)); > > Dados.CDSDesGrupo_ Ini.AsString := '*'; > > Dados.CDSDesSub_ Ini.AsString := '*'; > > Dados.CDSDesNropeca .AsString := '***'; > > if Dados.CDSDes. GotoKey then > > begin > > Dados.CDSEstDescont o.Value := Dados.CDSDesDesco05 .Value; > > end; > > > > end; > > > > procedure TDados.CDSEstCalcFi elds(DataSet: TDataSet); > > begin > > ver_desconto( ); > > Dados.CDSEstLiquido .Value := Dados.CDSEstPv1. Value * (1 - > > Dados.CDSEstDescont o.Value / 100); > > end; > > > > procedure TDados.CDSDesBefore Open(DataSet: TDataSet); > > begin > > Dados.CDSDes. IndexName := 'DEFAULT_ORDER' ; > > end; > > grato > > Stainle > > > > -- > []’s. > > Evandro Siqueira > Programador de Sistemas > L’essentiel Lingerie > (79) 3254-5511 Ramal 218 > skype: evandro.lessentiel > > ------------ --------- --------- ------ > > -- > <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> > > Veja quais são os assuntos do momento no Yahoo! +Buscados > http://br.maisbusca dos.yahoo. com <http://br.maisbusca dos.yahoo. com> > > [As partes desta mensagem que não continham texto foram removidas] > > -- ------------ --------- --------- --------- --------- ----- Uberdam Cavaletti Formado em Tecnologia da informação - Unoesc - Xxe Pós graduado em Desenvolvimento Java - Unoesc - Xxe Acesse http://www.curricul ar.com.br/ berdam Acesse http://passandovene no.blogspot. com ------------ --------- --------- --------- --------- ----- Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com [As partes desta mensagem que não continham texto foram removidas]