Localizar próximo registro após LOCATE. buscar o mesmo valor
Pessoal,
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!
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
Curtidas 0
Respostas
Marcelo_mileris
24/07/2006
Olha só... tenta usar o [b:c6d12ad2cb] LocateNext [/b:c6d12ad2cb]
Lembrando que eu estou utilizando Firebird com a Paleta Interbase
IBQuery.LocateNext(´HISTORICO´,´CONTA DE LUZ´,[loPartialKey,loCaseInsensitive]);
Lembrando que eu estou utilizando Firebird com a Paleta Interbase
GOSTEI 0
Techsoft
24/07/2006
Pois é, tentei usar, mas isso eh uma função da classe TIBCustomDataset e como estou usando ClientDataset, não funcionou...
Mas obirgado por responder, fico no aguardo...
Se alguém souber.
[]´s
Mas obirgado por responder, fico no aguardo...
Se alguém souber.
[]´s
GOSTEI 0
Marcelo_mileris
24/07/2006
Não sei se pode ajudar mas... vc pode utilizar um FindKey, e após isso ir utilizando um FindNext por exemplo
Um botão para pesquisar com o código
E depois disso em outro botão usar
Ele irá pesquisar até chegar no final da tabela
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
Techsoft
24/07/2006
Isso soluciona em partes, mas eu preciso que o usuário faça com qualquer campo da tabela, achei uma solução provisória com o q você postou acima...
declarei no uses a unit do IBCustomDataSet e utilizei o seguinte:
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
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
Paullsoftware
24/07/2006
É somente uma opinião...
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:
e No botão de pesquisa fazer:
espero ter ajudado... :wink:
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
Techsoft
24/07/2006
Paulo,
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
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
Paullsoftware
24/07/2006
Entendo, mais como disse antes é apenas uma opinião nem sempre fazemos como queremos já que teoricamente quem manda é o cliente, eu normalmente falo das desvantagens de usar algums recursos, pois, se a ficar muito carregada ele terão trabalho ao usar esse metodo de pesquisa, até pq não é legal usar todos os dados de uma tabela para pesquisar...
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:
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
Night_man
24/07/2006
citaram o filtro, eh bem legal, tenta
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
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