Fórum Contar registros num DataSet com filtro #375968
14/10/2009
0
Utilizo um filtro para me mostrar numa DBGrid os registros que interessam, até aí tudo bem.
No código abaixo como posso fazer para contar os registros que realmente passaram pelo filtro e estão na DBGrid.
[b:0f7711541e]DataSet1.IndexName := ´NCAD´;
DataSet1.Filtered := false;
DataSet1.Filter := ´NUMCAD=´ + QuotedStr(Edit1.Text);
DataSet1.Filtered := true;[/b:0f7711541e]
Se eu tenho 100 registros e só 10 atendem o filtro, utilizando o [b:0f7711541e]RecordCount[/b:0f7711541e], com o filtro ligado ou não, sempre vou ter 100, mesmo que na DBGrid apareçam só os 10.
Não consigui uma forma para isso.
Agradeço qualquer ajuda.
Cps.art
Curtir tópico
+ 0Posts
14/10/2009
Junior Miranda
[]´s
Gostei + 0
14/10/2009
Cps.art
Não entendi muito bem sua pergunta, então vou dizer como faço:
Tenho um sistema que funciona em Clipper estou tentando migrar para Delphi mantendo os BD do DBase inclusive indexadores .NTX.
Tenho um componente chamado [b:dd094c0879]Halcyon[/b:dd094c0879] que permite que eu utilize os BDs e indexadores no Delphi, sem alterar nada neles, permitindo tambem que possa ser utilizado o sistema em Clipper. (um de cada vez, claro).
No clipper, para saber quantos registros atendem alguma condição, faço:
[b:dd094c0879]Use (ou Select) Dataset1[/b:dd094c0879] - abrir ou selecionar o BD
[b:dd094c0879]Count [color=blue:dd094c0879]for[/color:dd094c0879] NumCad=´1234´ [color=blue:dd094c0879]to[/color:dd094c0879] qtd_reg[/b:dd094c0879] - Conta se campo NumCad for igual a 1234 e armazena na variavel qtd_reg
Porem, no Delphi eu não sei !!!!
Gostei + 0
14/10/2009
Steve_narancic
Pq usar esse Halcyon, não poderia ser o próprio BDE que é nativo do delphi???
Gostei + 0
14/10/2009
Cps.art
Tenho que migrar uma rotina de cada vez.
Gostei + 0
14/10/2009
Steve_narancic
Var i: integer; begin DataSet1.first; DataSet1.disablecontrols; while not DataSet1.eof do begin i:= i + 1; DataSet1.next; end; DataSet1.enablecontrols; showmessage(inttostr(i)); end;
Gostei + 0
17/10/2009
Cps.art
Fiz algo parecido com o que vc. sugeriu.
[b:e370e4b710] RegEnc := 0;
DataSet.First;
for K := 0 to DataSet.RecordCount -1 do
begin
if DataSet.FieldGet(´NumReg´) = Edit.Text then
begin
RegEnc := RegEnc + 1;
end;
DataSet.Next;
end;[/b:e370e4b710]
Atendeu o que eu queria, mas vou testar tambem da forma que vc. indicou.
Abraços
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)