como retornar a quantidade de registros de uma tabela? (IB)
02/02/2005
0
queria saber como faço pra meu IBdataset retornar a quantidade de registros de uma tabela... tentei usar recordcount mais ele responde sempre 0 ou 1... sendo q tem mais de 8 registros
showmessage(intTostr(bd.ibdataset1.recordcount));
no selectsql da minha table... tem la... selec * from tabela
alguem ae sabe oq tah errado ou oq fazer?[
valeu :)
Salsa
Posts
02/02/2005
Isabelct
Uma alternativa para isso seria você forçar que todos os registros sejam trazidos para a estação, movendo a query para o último registro.
bd.ibdataset1.last; showmessage(intTostr(bd.ibdataset1.recordcount));
Mas isso não fica muito elegante, porque se a sua tabela tiver muitos registros, o comando bd.ibdataset1.last pode demorar algum tempo. A melhor alternativa para o seu caso seria você contar os registros diretamente por uma instrução SQL. Assim:
bd.ibdataset1.SQL.Add(´SELECT COUNT(*) FROM TABELA´); bd.ibdataset1.open; showmessage(intTostr(bd.ibdataset1.recordcount));
Assim, independente do número de registros da sua tabela, a performance da sua aplicação será boa.
02/02/2005
Marcio.theis
02/02/2005
Emerson Nascimento
o correto seria:
bd.ibdataset1.SQL.Clear;
bd.ibdataset1.SQL.Add(´SELECT COUNT(*) FROM TABELA´);
bd.ibdataset1.open;
showmessage(intTostr(bd.ibdataset1.fields[0].asinteger));
02/02/2005
Emerson Nascimento
bd.ibdataset1.SQL.Clear;
bd.ibdataset1.SQL.Add(´SELECT COUNT(*) FROM TABELA´);
bd.ibdataset1.open;
showmessage(bd.ibdataset1.fields[0].asstring);
02/02/2005
Salsa
pq pelo dataset eu nao posso usar .SQL
pois no dataset nao existe essa propriedade neh?
:P
02/02/2005
Emerson Nascimento
bd.ibdataset1.SelectSQL.Add(´SELECT COUNT(*) FROM TABELA´);
bd.ibdataset1.open;
showmessage(bd.ibdataset1.fields[0].asstring);
02/02/2005
Rodolpho123
02/02/2005
Rodolpho123
IBDataSet1.FetchAll
O método FetchAll funciona assim: Quando vc faz um SELECT * FROM TABELA, a maioria dos BD´s relacionais (ex: FB/IB), para otimizarem o tráfego de registros na rede, não trazem todos os registros do seu SELECT. Então, a cada medida que vc vai, digamos assim, ´visitando´ o registro, ele vai trazendo-os à medida que vc for chamando (Next ou Last). o FetchAll, traz todos os registros e os armazena em um buffer local. Então, depois que vc abrir o seu DataSet, se vc usar o FecthAll e depois der um RecordCount, vc terá todos os registros do seu SELECT.
02/02/2005
Gandalf.nho
02/02/2005
Salsa
:wink:
19/02/2005
Vitoreduardo
bd.ibdataset1.SQL.Clear; bd.ibdataset1.SQL.Add(´SELECT COUNT(*) FROM TABELA´); bd.ibdataset1.open; showmessage(bd.ibdataset1.fields[0].asstring);
Estou usando os componentes da paleta InterBase.
E estou usando IBQuery.
Só q eu não quero q apareça um showmessage, eu tenho um Label no form e gostaria que a este label recebesse a quantidade de registro.
Não sei se fui claro, mais no paradox eu faria assim:
.
Label1.caption:=inttostr(Dbgrid1.DataSource.DataSet.RecordCount);
isso eu colocaria em baixo de post e no oncreate do form.
Se alguém puder me ajudar ficarei grato.
Jackell Alves
20/02/2005
Gandalf.nho
bd.ibdataset1.SQL.Clear; bd.ibdataset1.SQL.Add(´SELECT COUNT(*) AS TotalRegistros FROM TABELA´); bd.ibdataset1.open; Label1.caption := bd.ibdataset1TotalRegistros.AsString;
21/02/2005
Salsa
:)
vc poderia me explicar? valeu :P
21/02/2005
Renato_sp
no codigo SELECT COUNT(*) AS TotalRegistros
Estou falando que a contagem (count) vai se chamar TotalRegistros, se vc colocar isso no dataset qualquer, uma query por exemplo e ativar ela, e ir no add fields ao adicionar o campo vai aparecer TotalRegistros e nao Count como seria se nao tivesse dado um apelido a ela
Espero que tenha entendido
Renato / SP
Clique aqui para fazer login e interagir na Comunidade :)