Preciso fazer (FindNearest) no IB?
Estou passando um programa que fiz em Delphi3 com Paradox para Delphi7 com Interbase. No programa antigo em um form de pesquisa eu tenho o seguinte:
DM_Nordeste.Cliente.FindNearest([Edit1.Text]);
A medida que vou digitando um nome no Edit1 o ponteiro vai se posicionando no registro (Cliente) correspondente que está em um grid.
Não estou conseguindo fazer o mesmo no Interbase, alguem pode me ajudar?
Desde agradeço.
DM_Nordeste.Cliente.FindNearest([Edit1.Text]);
A medida que vou digitando um nome no Edit1 o ponteiro vai se posicionando no registro (Cliente) correspondente que está em um grid.
Não estou conseguindo fazer o mesmo no Interbase, alguem pode me ajudar?
Desde agradeço.
Ronylee
Curtidas 0
Respostas
Dopi
27/04/2004
Esqueça isso....
Em Banco de Dados, você deve filtrar ao máximo o trafego de informação do banco de dados ao usuário.... Lembre-se que o banco de dados poderá estar separado da aplicação por uma linha discada (lenta) e trazer 1000 registros demorará um bocado.... Ou seja, você nunca terá acesso ´fisico´ a tabela.
Voce deve fazer algo do tipo: Digite as iniciais do cliente:
E nesse caso efetuar uma consulta SQL que retorne somente os clientes que correspondam a condiçao:
Ex: No commandtext do seu DataSet....
select * from CLIENTES where NOMECLIENTE starting with :PNOME order by NOMECLIENTE ;
SeuDataset.Params.ParamByName(´PNOME´).AsString := Edit1.Text ;
Em Banco de Dados, você deve filtrar ao máximo o trafego de informação do banco de dados ao usuário.... Lembre-se que o banco de dados poderá estar separado da aplicação por uma linha discada (lenta) e trazer 1000 registros demorará um bocado.... Ou seja, você nunca terá acesso ´fisico´ a tabela.
Voce deve fazer algo do tipo: Digite as iniciais do cliente:
E nesse caso efetuar uma consulta SQL que retorne somente os clientes que correspondam a condiçao:
Ex: No commandtext do seu DataSet....
select * from CLIENTES where NOMECLIENTE starting with :PNOME order by NOMECLIENTE ;
SeuDataset.Params.ParamByName(´PNOME´).AsString := Edit1.Text ;
GOSTEI 0
Paulo Trajano
27/04/2004
Mas se o seu banco estiver local e não tenha tanto registros assim que chegue a ficar lento, vc pode usar o [b:e0a542686e]Locate[/b:e0a542686e] do IB que funciona como o FindKey do Piradox.
Onde [color=green:e0a542686e][b:e0a542686e]´Nome´[/b:e0a542686e][/color:e0a542686e] é o campo a ser pesquisado, claro;
Nem precisa dizer que ele vai pesquisar o que está no [color=green:e0a542686e][b:e0a542686e]Edit1.Text[/b:e0a542686e];[/color:e0a542686e]
[color=green:e0a542686e][b:e0a542686e][lopartialKey][/b:e0a542686e][/color:e0a542686e] não faz diferença entre maiúsculas e minúsculas;
Tabela.Locate(´Nome´, Edit1.Text, [loPartilKey])
Onde [color=green:e0a542686e][b:e0a542686e]´Nome´[/b:e0a542686e][/color:e0a542686e] é o campo a ser pesquisado, claro;
Nem precisa dizer que ele vai pesquisar o que está no [color=green:e0a542686e][b:e0a542686e]Edit1.Text[/b:e0a542686e];[/color:e0a542686e]
[color=green:e0a542686e][b:e0a542686e][lopartialKey][/b:e0a542686e][/color:e0a542686e] não faz diferença entre maiúsculas e minúsculas;
GOSTEI 0
Dopi
27/04/2004
hehe... Piradox.... gostei. Relamente, como já ouvi por ai, quem usa Paradox em sistemas comerciais de grande porte morre louco.... :-)
GOSTEI 0
Paulo Trajano
27/04/2004
quem usa Paradox em sistemas comerciais de grande porte morre louco.... :-)
Acho que esse BD suja o nome da Borland, já que é nativo do Delphi. Deveriam tirá-lo do programa e deixar como nativo somente o IB.
Quanto a morrer louco, isso é pura verdade... depois de uma experiência horrível que tive com esse tal De Piradox aí, nunca mais quero vê-lo na minha frente :x
GOSTEI 0