Qtde de Registros em uma determinada Tabela

20/05/2008

1

:) Ola Caroa amigos Delphianos,

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


Responder

Posts

20/05/2008

Eniorm

nao sei o banco que vc usa... mas se for firebird

SELECT COUNT(CODIGO) AS TOTAL_CLIENTES FROM SUATABELA


Responder

20/05/2008

Rjun

[b:e43fdc091f]Recordcount[/b:e43fdc091f]


Responder

20/05/2008

Peterpan

[quote:0f812cebac=´Enio Marconcini´]nao sei o banco que vc usa... mas se for firebird

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


Responder

20/05/2008

Eniorm

[b:026bdcf56e]Recordcount[/b:026bdcf56e]


se usar o RecordCount nao esquece de aplicar um FetchAll antes :D

senão.... rsrsrs


Responder

20/05/2008

Eniorm

basta dar o Open, se vc aplica o Insert o dataset entra em modo de inserção, talvez seja isso.

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.


Responder

20/05/2008

Peterpan

[quote:1a9432e703=´Enio Marconcini´]basta dar o Open, se vc aplica o Insert o dataset entra em modo de inserção, talvez seja isso.

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


Responder

20/05/2008

Rjun

Enio, perdoando minha ignorância, para que serve o FetchAll?


Responder

20/05/2008

Pestana_

Enio, perdoando minha ignorância, para que serve o FetchAll?


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


Responder

21/05/2008

Eniorm

RJun, não pela ignorância, rsrsr afinal estamos aqui para aprender e compartilhar rsrsrsrs

é 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;


Responder

21/05/2008

Pestana_

[quote:e1f4bb3258=´Enio Marconcini´]Recomendo assim

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.


Responder

21/05/2008

Eniorm

não há necessidade de trazer todos os registros para memoria somente para saber o total de registros que a query retornou.


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


Responder

21/05/2008

Rjun

Interessante. Eu utilizo o ADO com SQL Server e ele me traz todos os registros.


Responder