Fórum Varrer ClientDataSet #333503

22/11/2006

0

Pessoal,

Gostaria de saber se é possível percorrer um dbgrid sem que o usuario perceba esta operação.

Exemplo:
preciso localizar dentro de um dbgrid um registro que atenda determinada condição, irei percorrer até encontrá-lo, mas enquanto isto o usuário percebe o que esta ocorrendo.

Gostaria que isto não ocorresse. É possível?

Abraços

Rodolfo


Rodolfo.pirolo

Rodolfo.pirolo

Responder

Posts

22/11/2006

Marcio.theis

Pode trabalhar com propriedades da query, tipo:

qryTeste.DisableControls;
qryTeste.First;
while not qryTeste.Eof
    begin
    //Validações
    qryTeste.Next;
    end;
qryTeste.First;
qryTeste.EnableControls;


Os comandos devem de estar todos certos.... :lol:


Responder

Gostei + 0

22/11/2006

Rodolfo.pirolo

Marcio,

Resolveu o meu problema, muito obrigado pela dica.

Abraços

Rodolfo


Responder

Gostei + 0

22/11/2006

Marcio.theis

Certo...
Valew... 8)


Responder

Gostei + 0

23/11/2006

Brunolspp

no cas de ser um campo vc pode usar o metodo locate apos um disablecontrols

ou usar o metodo setkey, mas para este, vc deve criar um indicedinamico no cds, estou falando isso pq ja tive q lidar com uma gama de dados mto grande e fazer a operação ficar rapido, e no setkey foi a solução.. ficou mto rapido mesmo..

abração


Responder

Gostei + 0

23/11/2006

Titanius

Bruno, pode explicar melhor isso aí? Gostei da idéia.. :D


[]s


Responder

Gostei + 0

24/11/2006

Marco Salles

eu acho que o set setkey em termos de velocidade , quando comparado ao FinKey , não deve trazer diferenças significativas.. Pelas biografias , o que se diz é que o primeiro fornece um tratamento de erro melhor e o segundo é mais simples de usar...
Porém os dois comparados ao metodo locate , podem trazer siginificativa melhora em termos de performace.. Ja que o método Locate , por não exigir um indice , efetua uma pesquisa sequencial e não otimizada..

Por outro lado , quando se tem um indice , o método Locate [b:a3d9602fe4]o utilizara [/b:a3d9602fe4]e a pesquisa sera mais rápida....

No fim , teoria é teoria e prática é prática


Responder

Gostei + 0

24/11/2006

Brunolspp

o uso do setkey vc precisa somente criar um indice dinamico no cclientdataset e aplicar o findkey e passar para o c ampo o valor desejado a se achar,

no meu dia a dia ele é o mais rapido de todos os recursos.

na minha pagina de downloads no exemplo do borcon deste ano com certeza vc acha uma função para criar indices dinamicamente no clientdataset, principalmente no evento titleclick dos dbgrids.

eis o link: http://cc.borland.com/Author.aspx?ID=795118

Abração


Responder

Gostei + 0

24/11/2006

Marco Salles

Bem , eu não vi nada ate hoje , que indicasse o uso do setKey seguido do FindKey... Sinceramente conhecia o setKey usado em conjunto com o GotoKey , ou reciprocamente com o métdo GotoNearest..

Assim o algoritimo seria:

DataSet.SetKey ; //inicialização do estado de pesquisa DataSet[´Campo´]:=p a ser pesquisado //configuração do valor alvo Dataset.gotoNearest; //iniciar o processo de pesquisa


Sinceramente é uma surpresa para mim o uso do SetKey com o FindKey


Responder

Gostei + 0

25/11/2006

Andrew

[quote:c9b61aa92f=´Marco Salles´]Bem , eu não vi nada ate hoje , que indicasse o uso do setKey seguido do FindKey... Sinceramente conhecia o setKey usado em conjunto com o GotoKey , ou reciprocamente com o métdo GotoNearest..

Assim o algoritimo seria:

DataSet.SetKey ; //inicialização do estado de pesquisa DataSet[´Campo´]:=p a ser pesquisado //configuração do valor alvo Dataset.gotoNearest; //iniciar o processo de pesquisa


Sinceramente é uma surpresa para mim o uso do SetKey com o FindKey[/quote:c9b61aa92f]

Marco Salles, vc quer dizer que se houver um índice na tabela o LOCATE ficará masi rápido? Fica tanto quanto FindKey?


Responder

Gostei + 0

25/11/2006

Marco Salles

Marco Salles, vc quer dizer que se houver um índice na tabela o LOCATE ficará masi rápido? Fica tanto quanto FindKey?


eu quero dizer , é o que eu ja li sobre o assunto ,´é que se estiver um indice , a pesquisa usando o locate sera mais rápida quando comparada a uma pesquisa usando o proprio Locate nun campo que não é indice... Porque automaticamente o metodo Locate usara o indice

Nas biografias , pelo menos ate agora , não existe uma comparação [b:b33cfe7be6]entre campos com indice[/b:b33cfe7be6] , pesquisado pelo Locate , pelo FindKey ou pelo GotoKey usando SetKey Para Preparar , no quesito rapidez.. Vale é a prática de cada um ao se depara com eventuais situaçoes especiais.

O que todas biografias são unanimes em afirmar que a pesquisa com Locate em campos que[b:b33cfe7be6] não são indices [/b:b33cfe7be6]são mais lentas porque são feitas de modo sequencial...


Responder

Gostei + 0

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

Aceitar