Fórum Filtragem no ClientDataSet lenta demais... #335210
26/12/2006
0
Pessoal,
Estou usando Delphi 7 + DBExpress + Firebird 1.5.
Utilizo os componentes SQLQuery, DataSetProvider, ClientDataSet e DataSource.
Tenho uma tela com uma DBGrid ligada ao datasource e nesta mesma tela tenho um Edit para pesquisa. A cada caractere digitado no Edit (evento onChange), o clientdataset é filtrado com o código abaixo:
O problema é que, mesmo para apenas 10 registros no meu clientdataset há uma lentidão excessiva...Se eu digitar a palavra ´teste´ no edit, com uma velocidade razoável, há um efeito de ´câmera lenta´ na digitação...
Alguém saberia como resolver isso ? Eu acho inadmissível que para um dataset carregado em memória haja um comportamento destes...Com certeza deve estar faltando alguma configuração adicional no meu cds ou até mesmo algo a mais no código...
Alguém poderia me ajudar ?
Obrigado !!
Estou usando Delphi 7 + DBExpress + Firebird 1.5.
Utilizo os componentes SQLQuery, DataSetProvider, ClientDataSet e DataSource.
Tenho uma tela com uma DBGrid ligada ao datasource e nesta mesma tela tenho um Edit para pesquisa. A cada caractere digitado no Edit (evento onChange), o clientdataset é filtrado com o código abaixo:
if edNome.Text <> ´´ then begin dModule.cdsJogo.Filter := ´NOME_JOGO LIKE ´´´ + edNome.Text + ´¬´´´; dModule.cdsJogo.Filtered := TRUE; end else dModule.cdsJogo.Filtered := FALSE;
O problema é que, mesmo para apenas 10 registros no meu clientdataset há uma lentidão excessiva...Se eu digitar a palavra ´teste´ no edit, com uma velocidade razoável, há um efeito de ´câmera lenta´ na digitação...
Alguém saberia como resolver isso ? Eu acho inadmissível que para um dataset carregado em memória haja um comportamento destes...Com certeza deve estar faltando alguma configuração adicional no meu cds ou até mesmo algo a mais no código...
Alguém poderia me ajudar ?
Obrigado !!
Marcelocda
Curtir tópico
+ 0
Responder
Posts
26/12/2006
Titanius
Olá Marcelo, acho que seu filter está tranquilo, o problema está onde você colocou ele, no OnChange do Edit.
Se você digitar um T, ele filtra, depois um E ele filtra e assim por diante... ou seja, se você quer filtrar por TESTE, ele filtra 5 vezes.
Tente por o codigo num botão, acho que vai melhorar.
[]s
Se você digitar um T, ele filtra, depois um E ele filtra e assim por diante... ou seja, se você quer filtrar por TESTE, ele filtra 5 vezes.
Tente por o codigo num botão, acho que vai melhorar.
[]s
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)