Fórum IBQuery.RecordCount sempre mostra 1 #230354

06/05/2004

0

Me deparei com o esse bug do IBquery que retorna 1 mesmo se tiver mais registros...
Basta usar o Last ou um FechAll.

Tem alguma atualização para esse bug ?

Obrigado.


Pezzin

Pezzin

Responder

Posts

06/05/2004

Edineidaniel

Pois é Pezzin,

Tb ja me deparei com esse problema...
mas eu ainda não encontrei na para de atualização disso...
eu uso
IBQuery.Last;
I := IBQuery.RecordConut;
IBQuery.First;

se alguém encontrar alguma coisa sobre isso respondam
t+
Edinei


Responder

Gostei + 0

06/05/2004

Lucas Silva

A solução é:
Depois que você abrir a query, coloque este comando.
IBQuery.FetchALL;



Responder

Gostei + 0

06/05/2004

Rodolpho123

Olá Pezzin,

Isto acontece porque o InterBase não é um banco Flat-Table, como dBase,Paradox,Access...etc. Ele é do sistema B-Tree, então seus índices são diferentes das Flat-Tables, que sempre sabe quantos registros tem armazenados. Para que vc saiba o total de registros no IB, vc tem que visitar todos os registros da sua tabela (ver Delphi Help IB.RecordCount). Se vc visitar apenas uma parte, só vai lhe dar os registros contados até onde vc foi, e isto vale tanto para Tables quanto para Queries. Uma vez visitados todos os registros, vc tem o total quando quiser, desde que não feche a Query. Eu costumo após a abertura da Query fazer assim:
With IBQuery1 do
 begin
  Last;
  First;
 end;
 

Usar FechAll até é uma boa opção, mas para quem trabalha com muitos usuários e necessita de atualização precisa, a própria Borland não recomenda o uso de FechAll, por apenas questões de atualizações, nada mais.


Responder

Gostei + 0

06/05/2004

Lucas Silva

Usar FechAll até é uma boa opção, mas para quem trabalha com muitos usuários e necessita de atualização precisa, [b:383a781900]a própria Borland não recomenda o uso de FechAll[/b:383a781900], por apenas questões de atualizações, nada mais.


Eu também usava o comando [b:383a781900]LAST [/b:383a781900]e [b:383a781900]FIRST[/b:383a781900].
Em um evento que teve aqui em BH (que foi o Clube delphi que promoveu), um palestrante da Borland recomendou usar [b:383a781900]FetchALL[/b:383a781900].

Agora eu estou igual cego em tiroteio..

É ou não é bom usar FetchAll?


Responder

Gostei + 0

06/05/2004

Avante

O Ideal para saber o numero de registros é usar

 Select count(0) n_registro from tabela 


Usar FetchAll, ou um loop para ler toda a tabela não é recomendável para ambientes client/server.

[]´s


Responder

Gostei + 0

06/05/2004

Rodolpho123

Olá Lucas,

Sobre FetchAll, eu li isso no próprio arquivo de ajuda do Delphi7. Não é nada de mais não, só não é recomendado para quem necessita de atualizações precisa emuitos usuários conectados, pois alguns registros envolvidos no FetchAll podem ser modificados por outras aplicações, que provavelmente deixaria o BD corrompido.

Está ecrito assim no Help:


Note:Using FetchAll is not always appropriate. For example, when an application accesses a database used by many simultaneous clients and there is a high degree of contention for updating the same records, fetching all records at once may not be advantageous because some fetched records may be changed by other applications. Always weigh the advantages of reduced network traffic against the need for reduced record contention.



Responder

Gostei + 0

14/02/2017

Wellington Silva

Me deparei com o problema também. FetchAll foi a solução também, apesar de ser muito estranho.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar