Fórum Localizar próximo registro após LOCATE. buscar o mesmo valor #326043
24/07/2006
0
Alguém saberia me dizer como faço para que após dar um locate, seguir com a busca nos próximos registros pelo mesmo valor... se eu dou locate, ele sempre pega o primeiro registro encontrado...
por exemplo.. quero buscar por um endereço... ´RUA ABC´ quero ir localizando os registros com ´RUA ABC´... com o locate eu acho o primeiro, mas não consigo ir até os outros registros.
Vlw!
Techsoft
Curtir tópico
+ 0Posts
24/07/2006
Marcelo_mileris
IBQuery.LocateNext(´HISTORICO´,´CONTA DE LUZ´,[loPartialKey,loCaseInsensitive]);
Lembrando que eu estou utilizando Firebird com a Paleta Interbase
Gostei + 0
25/07/2006
Techsoft
Mas obirgado por responder, fico no aguardo...
Se alguém souber.
[]´s
Gostei + 0
25/07/2006
Marcelo_mileris
Um botão para pesquisar com o código
ClientDataSet.FindKey([EditBusca.Text]);
E depois disso em outro botão usar
ClientDataSet.FindNext;
Ele irá pesquisar até chegar no final da tabela
Gostei + 0
25/07/2006
Techsoft
declarei no uses a unit do IBCustomDataSet e utilizei o seguinte:
TIBCustomDataSet(dtsINDados.dataset).LocateNext(´´,´´,[]);
dtsINDados é o meu DataSource e coloquei os parâmetros dentro do locate para testes... ele faz a busca sem problemas, mas fiquei na dúvida se poderia usar assim ou se isso poderia me dar algum problema futuro.
Se não tiver problema nenhum vou adotar esta solução, mas não sei se é a ideal.
Obrigado mais uma vez.
[]´s
Gostei + 0
25/07/2006
Paullsoftware
não seria melhor vc usar um filtro para ir elimiando os demais dados e deixar somente os que possuem os critérios da pesquisa, através de comandos SQL?
tipo:
No OnCreate do Form se você quer ver todos os dados, eu particularmente não gosto disso mais seria somente atualizar o ClientDataSet fazendo:
with CDS do close; CommandText := ´´; //Sempre limpo antes, pois já tive problemas por não limar CommandText := ´select * from TABELA; Open; end;
e No botão de pesquisa fazer:
with CDS do close; CommandText := ´´; //Sempre limpo antes, pois já tive problemas por não limar CommandText := ´select * from TABELA where NOME starting with ´+ Edit1.Text; Open; end;
espero ter ajudado... :wink:
Gostei + 0
25/07/2006
Techsoft
Existe a opção de filtro, a grade sempre é exibida em branco e o usuário informa o que deseja ver, dentro desse filtro ele pode querer pesquisar por algum campo específico.
Por isso a utilização do locate e locatenext, pois o que o usuário deseja nem sempre está nas opções de filtro, pois no momento da localização, permito que o usuário selecione qualquer campo do CDS.
Para falar a verdade, eu não gosto muito dessa solução que estou implementando, porém, este sistema esta sendo migrado de uma plataforma DOS e lá eles tinham esta funcionalidade e se habtuaram a usá-la, acredito que nas próximas versões consigamos fazer algumas modificações mais profundas e mostrar para o usuário que existem outras formas de fazer o que ele quer, mas por enquanto não será possível, isso foi uma das exigências no momento da migração, que as funcionalidades todas fossem mantidas.
[]´s
Gostei + 0
25/07/2006
Paullsoftware
Nesse caso vc poderia pré-selecionar alguns campos que poderiam ser usados na pesquisa como por exemplo se for um cliente: Nome, RG, CFP, Fone, Email, CEP, Bairro, Cidade...
volto a dizer: É somente uma opinião... converse com seu cliente e explique pra ele as vantagens... :wink:
Gostei + 0
25/07/2006
Night_man
ClientDataSet1.filtered := False;
ClientDataSet1.filter := ´ENDERECO = ´ + QuotedStr(´RUA ABC´)
ClientDataSet1.Filtered := True;
o client vai ficar somente com os registros q satisfazem a condicao,
pode ser usado ´And´, ´Or´, ´Like´, ´Null´, eh bem legal
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)