Como saber quantos registros estão sendo listados?
30/08/2004
0
Allan Elias Ramos :roll:
Aersoftware
Post mais votado
31/08/2004
FIZ ESSE FILTRO ABAIXO NORMALMENTE...
E O TOTAL DE CLIENTES QUE HAVIAM NO DBGRID OU SEJA, O TOTAL DE CLIENTES QUE FORAM RELACIONADOS APARECIA NO LABEL...
POR EXEMPLO: QUERO TODOS OS CLIENTES QUE FIZERAM COMPRAS HOJE, ESCOLHO DIGITO A DATA NO EDIT E VAI APARECE TODOS QUE COMPRARAM NA DATA, E NO LABEL O TOTAL...
TENHO 1000 CLIENTE, MAS SO 20 COMPARAM HJ ENTAO NO LABEL APARECERÁ 20...
Table1.Filter := ´PARTIDOS=´+´´´´+EDIT1.Text+´´´´;
Table1.Filtered := True;
query1.Open;
query1.FetchAll;
ShowMEssage(´Foram encontrados ´+IntToStr(query1.RecordCount)+´ registros ´);
LABEL7.Caption := INTTOSTR(QUERY1.RecordCount);
Marcelo_vms
Mais Posts
30/08/2004
Janete
// para verificar
if tabela.recordcount = 0 then
begin
nomebotão1.enabled:=false;
nomebotão2.enabled:=false;
end;
:D
30/08/2004
Aersoftware
Allan Elias Ramos :roll:
31/08/2004
Xtreme
filtrotabela.last;//ir para o ultimo
showmessage(inttostr(filtrotabela.recordcount));//total de registros
filtrotabela.first;//para voltar ao primeiro
eu so queria saber por que tenho que fazer isso mas, pelo menos da certo.
31/08/2004
Vinicius2k
Colega, em qual tipo de camada de acesso vc precisa fazer isto? IBX(IBQuery)?
Se for, de uma olhada neste tópico : http://delphiforum.icft.com.br/forum/viewtopic.php?t=45198
Neste tópico tbm tem a solução que eu utilizo quando preciso contar registros, talvez ajude o colega AerParquer
Usar o RecordCount, não é uma boa prática... alguns exemplos são:
[list:1232d79efe][*:1232d79efe]o IBX que realiza o fetch do registros à medida que necessários, ou seja, se vc só estiver exibindo um registro o RecordCount é 1...
[*:1232d79efe]no dbExpress, se a query tiver parametros e/ou joins tentar ler o RecordCount levanta uma exceção: ´Capacity not supported´...
[*:1232d79efe]usando ClientDataSets, se vc usar em PacketRecords um valor diferente de -1 (o que é correto para otimizar seu desempenho) o RecordCount vai ser sempre a quantidade de registros que foram trazidos até o momento da leitura... de 1000 em 1000, por exemplo...
[*:1232d79efe]se vc usar funções agregadas como SUM, COUNT, AVG, etc... a query sempre terá 1 registo, que é o resultado da função...[/list:u:1232d79efe]
T+
31/08/2004
Xtreme
Bom nao sei se foi isso que vc quiz dizer mas, é +ou- o que eu faço para selects onde o resultado eu sei que será pequeno(com poucos registros), eu uso da maneira que expliquei acima, mas quando sei que o nº de registros pode ser auto, faço um select count(*) aparte com a mesma clausula where do select original, É mas rapido e eficaz nesses casos mas, para resultados pequenos nao vejo muita nessecidade(hehe, mas concerteza fica bem melhor usar o select count(*)).
31/08/2004
Vinicius2k
Vc pode também substituir seus dois métodos (.Last e .First), por .FecthAll, com ele vc estará orientando a Query para que traga todos os registros e a leitura seja correta... isso evita o efeito incomodo, numa DBGrid, do cursor se mover para baixo e para cima sem a interação do usuário...
T+
31/08/2004
Janete
Cria um while então, e uma variável para somar quantos foram listados exemplo:
procedure....
var WConta : Integer;
begin
WConta:=0;
TbItens.First;
While not TbItens.Eof do
Begin
if ...... //aqui coloca seu critério se for true por exemplo
WConta:=WConta+1; // ele conta
Tabela.Next;
end;
SHowmessage(´Foram listados ´+WConta+´.´);
31/08/2004
Xtreme
Valew cara!
Clique aqui para fazer login e interagir na Comunidade :)