Qtde de Registros em uma determinada Tabela
20/05/2008
0
Bem gostaria que alguem que ja passou por esse problema possa me ajudar, abaixo vou descrever passo a passo do que preciso fazer;
1) Tenho no meu aplicativo, uma DM e outra DMBusca um formulario Principal e o FormBase.
2) Tenho um Formulario de Clientes que herda todos os componentes do
FormBase
3) No Formulario de Clientes tenho uma Label com Name LBLTotal
4) Nessa Label gostaria de mostrar ao usuario a quantidade de Registros
Existente na Tabela de Clientes.
Alguem pode me dar uma Luz de como fazer isso?
Grato pela ajuda
Perterpan
Peterpan
Posts
20/05/2008
Eniorm
SELECT COUNT(CODIGO) AS TOTAL_CLIENTES FROM SUATABELA
20/05/2008
Peterpan
SELECT COUNT(CODIGO) AS TOTAL_CLIENTES FROM SUATABELA[/quote:0f812cebac]
Ola Enio
Eu realmente uso firebird 2.0, mas a função que me passou agora tbem não esta mostrando a quantidade de registros, segue abaixo como coloquei no form:
procedure TfrmCadClientes.FormCreate(Sender: TObject); begin inherited; DM.cdsTotalClientes.Open; DM.cdsTotalClientes.Insert; LblTotal.Caption := DM.cdsTotalClientesTOTAL_CLIENTES.AsString; end;
onde posso estar errando que não aparece a QTDE de REGISTROS na TABELA
Grato
Peterpan
20/05/2008
Eniorm
se usar o RecordCount nao esquece de aplicar um FetchAll antes :D
senão.... rsrsrs
20/05/2008
Eniorm
Recomendo assim
se vc usar uma query especifica para usar o select count, basta dar um fieldbyname para retornar a quantidade
se vc já tem um query com todos os clientes, basta fazer assim
cdsTotalClientes.Open;
cdsTotalClientes.FetchAll;
SeuLabel.Caption := IntToStr(cdsTotalClientes.RecordCount);
ai sim vc tem o resultado todal.
20/05/2008
Peterpan
Recomendo assim
se vc usar uma query especifica para usar o select count, basta dar um fieldbyname para retornar a quantidade
se vc já tem um query com todos os clientes, basta fazer assim
cdsTotalClientes.Open;
cdsTotalClientes.FetchAll;
SeuLabel.Caption := IntToStr(cdsTotalClientes.RecordCount);
ai sim vc tem o resultado todal.[/quote:1a9432e703]
Enio Obrigado pela ajuda, problema Resolvido
20/05/2008
Pestana_
O Enio pode falar alguma coisa a respeito, mas vou adiantar o assunto:
o IBX não faz [i:bff8f2eb42]fetch all[/i:bff8f2eb42] dos registros na query, isto é, não carrega todos os registros na memório como outros componentes de acesso, motivo que o torna além de outos com um melhor desempenho para aplicações Firebird/Interbase. Os registros serão carregados de acordo com a necessidade.
por isso que é preciso utilizar o [i:bff8f2eb42]fetch all[/i:bff8f2eb42] para saber o resultado de registros retornado!
nem todos os componentes de acesso utiliza este recurso.
flw
21/05/2008
Eniorm
é exatamente a explicação do Pestana
o lance do FetchAll, vc pode mesmo até testar no IBExpert ao abrir todos os dados da tabela. Só serão exibidos os que estão sendo visualizado na grade.
Dessa forma, se tiver sendo exibido 50 registros na grade, um RecordCount retornaria 50, e não o total da tabela... conforme vc vai rolando a grande isso vai mudando.
O FetchAll seria a mesma coisa que vc aplicar os seguintes comandos.
query.Last;
query.First;
21/05/2008
Pestana_
se vc usar uma query especifica para usar o select count, basta dar um fieldbyname para retornar a quantidade[/quote:e1f4bb3258]
como o Enio recomenda eu tambem preferio utilizar está maneira, sendo assim, não há necessidade de trazer todos os registros para memoria somente para saber o total de registros que a query retornou.
flw.
21/05/2008
Eniorm
wana-wanga!
pois é, a dica é essa mesmo :D
imagina uma tabela toda aberta, com N-lhões registro abertos, agora multiplica isso numa rede com vários computadores fazendo isso rsrsrs
abraços
21/05/2008
Rjun
Clique aqui para fazer login e interagir na Comunidade :)