Varrer ClientDataSet

Delphi

22/11/2006

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

Curtidas 0

Respostas

Marcio.theis

Marcio.theis

22/11/2006

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:


GOSTEI 0
Rodolfo.pirolo

Rodolfo.pirolo

22/11/2006

Marcio,

Resolveu o meu problema, muito obrigado pela dica.

Abraços

Rodolfo


GOSTEI 0
Marcio.theis

Marcio.theis

22/11/2006

Certo...
Valew... 8)


GOSTEI 0
Brunolspp

Brunolspp

22/11/2006

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


GOSTEI 0
Titanius

Titanius

22/11/2006

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


[]s


GOSTEI 0
Marco Salles

Marco Salles

22/11/2006

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


GOSTEI 0
Brunolspp

Brunolspp

22/11/2006

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


GOSTEI 0
Marco Salles

Marco Salles

22/11/2006

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


GOSTEI 0
Andrew

Andrew

22/11/2006

[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?


GOSTEI 0
Marco Salles

Marco Salles

22/11/2006

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...


GOSTEI 0
POSTAR