[firebase-br] Filtrar a cada tecla digitada

Rodrigo A. de Freitas rodrigo em solucoeseinformatica.com.br
Seg Dez 18 11:03:16 -03 2006


Não querendo prolongar o off-topic mais além do que já foi, mas vou
colocar a minha experiência pessoal;

Eu tinha sistemas em Paradox até uns 6 ou 7 anos atrás, onde tinha o tipo
de pesquisa incremental informado; Obviamente, quando migrei meus sistemas
pro Interbase (e posteriormente, pro Firebird), a pesquisa incremental foi
o primeiro recurso do sistema que foi pro saco.

Acontece que um dos nossos clientes maiores à epoca estava migrando nossa
aplicação do DOS (um antigo sistema feito em Clipper/xBase) para
Delphi/Firebird, e como havia pontos de venda, a gerente comercial, que
estava coordenando a implantação foi radical: Ou você ativa a pesquisa
como era ou está fora de cogitação o uso do novo sistema.

Tentamos argumentar por semanas a fio sem sucesso, até que consegui uma
solução que parece funcionar razoavelmente bem:

Eu utilizo Queries unidirecionais + Providers + ClientDataSets; O
ClientDataSet faz um cache local da do resultado da query, assim, toda a
pesquisa é feita localmente, de forma indexada.

Nos casos de tabelas onde eu sei que o banco não crescerá demais
(cadastros, por exemplo) eu libero todo o conteúdo do banco; Onde o buraco
é mais embaixo (movimentação de contas, contas à pagar, receber, etc...)
eu faço um filtro prévio na query visando trazer somente títulos em aberto
ou apenas o movimento da última semana; Se o cliente quiser visualizar
mais informações, ele dispõe de ferramentas para construir a cláusula
Where que eu disparo para o banco de dados.

Óbvio que não fica 100% mas o resultado geral é bem satisfatório.

[]'s

Rodrigo A. de Freitas
Análise & Desenvolvimento

Soluções & Informática.




> Vou filosofar bobagens.
> O sucesso do Google está na rapidez com que localiza e recupera os dados
> procurados. O segredo do Google é um algoritmo que acelera muito a
> pesquisa,
> e a indexação prévia de uma grande quantidade de dados nos quais depois
> podem ser feitas pesquisas.
>
> Na pesquisa incremental, provávelmente a pesquisa é feita num único campo
> (coluna). Então o negócio é preparar esta coluna para a pesquisa,
> criando-se
> uma tabela só com dois campos: o da pesquisa, e o endereço em que estão as
> linhas selecionadas, localizadas através de um like. Uma cópia dessa
> tabela
> auxiliar poderia ser trazida para a memória, em todo ou em parte.
>
> Fim da bobagem.
> []´s
> Otto
> ----- Original Message -----
> From: "Jeferson Oliveira" <jefersonfoliveira em gmail.com>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Monday, December 18, 2006 8:39 AM
> Subject: Re: [firebase-br] Filtrar a cada tecla digitada
>
>
> Ivan Guimarães Meirelles escreveu:
>> O colega Saulo mencionou que o programa anterior faz a busca da forma
>> que
> o
>> Cliente quer... e o mesmo é bem rápido...
>
> O programa anterior usa Access como base de dados, e não um banco de
> dados relacional. Qualquer comparação entre os casos eu considero um
> equívoco, pois tratam-se de situações muito distintas.
>
>
>> Assim a demora será apenas ao carregar a grid... depois disso a busca
>> pela
>> grid é bem rápida...
>
> Eu entendo e concordo que dessa forma a dor é menor, mas ainda assim
> não será um processo indolor.
>
>
>> Eu uso esse recurso... tenho uma tabela com 1.785.000 registros
>> aproximadamente (relação de notas fiscais emitidas)... quando o cliente
> quer
>> buscar alguma nota eu peço que seja informado o período... assim diminui
>> a
>> quantidade de registros que vai para grid... depois na própria grid o
>> cliente faz a busca tecla por tecla... e é muito rápido...
>
> Aqui a situação já melhora, pois houve um filtro prévio. É claro que
> ele pode informar um período de 100 anos, nesses casos seria
> interessante avisá-lo da possível demora para retornar tantos
> registros.
>
>
>> não sei se há esse recurso no Delphi
>
> Dá sim. Com um edit.
>
>
> A questão maior para mim está em entender a diferença entre um BANDO
> de dados (Access, Paradox, etc.) e um BANCO de dados (Firebird por
> exemplo).
>
> Entendo bem a dificuldade de migrar de uma estrutura "rápida" e
> encontrar resistência por parte dos clientes.
> Trabalhei em uma empresa que tinha um sistema em Paradox. Até aí tudo bem,
> o
> problema é que o sistema começou a vender muito, e as bases de dados
> crescendo e corrompendo e a equipe de suporte quase que só por conta de
> ficar reestruturando tabelas corrompidas. Quando iniciei o projeto de
> migração para banco de dados, esbarrei no mesmo problema das telas de
> pesquisas. Com o Paradox o usuário via todos os registros e fazia uma
> busca
> incremental, muito rápida. Argumentei da importância de mudar o modo
> de pesquisa, mas não consegui convencer a diretoria da empresa. Quando
> começaram a tentar utilizar vários componentes mágicos para tentar
> resolver esse problema ví que ali não era lugar para mim. Desisti do
> projeto e pedi demissão.
>
> Fui para outra empresa em situação semelhante, de novo a resistência para
> mudança na tela de pesquisa, mas dessa vez consegui ser convincente.
> Migramos para Firebird, e o nível de satisfação dos clientes com o sistema
> aumentou bastante.
> O período de adaptação dos clientes à nova forma de pesquisa foi difícil,
> mas pergunta pra equipe de suporte ou mesmo para os clientes se algum
> deles
> quer voltar ao modelo anterior. :D
>
>
> Abraço!
> Jeferson Oliveira
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
> Esta mensagem foi verificada pelo E-mail Protegido Terra.
> Scan engine: McAfee VirusScan / Atualizado em 15/12/2006 / Versão:
> 4.4.00/4920
> Proteja o seu e-mail Terra: http://mail.terra.com.br/
>
>
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>






Mais detalhes sobre a lista de discussão lista