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:
        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

Marcelocda

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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar