Fórum RecordCount sempre -1 #320401

02/05/2006

0

Olá Galera, quando abro a minha tabela, ele me retorna o recourd count sempre -1

o que pode ser?

utlizo BDE - TQuery

Abraços...


Tremonti

Tremonti

Responder

Posts

02/05/2006

Titanius

É porque o delphi começa a contar apartir do Zero...

for i:=0 to 7 do

roda 8 vezes

porem geralmente nos Count do Delphi você mesmo tem que Dar o -1 pra pegar o Indice de um Item, por exemplo.


[]s


Responder

Gostei + 0

02/05/2006

Tremonti

Cara, nada a ver
é o RecordCount da Tabela, traz sempre o a quantidade de registros


Responder

Gostei + 0

02/05/2006

Siam

Tente Query.Last; Query.First; antes de utilizar o RecordCount


Responder

Gostei + 0

02/05/2006

Araujojunior

Já verificou se a consulta realmente retorna resultados? pois a sintaxe está correta, Query1.RecordCount;


Tive problemas uma vez e foi pau no Delphi, soh que depois que reinstalei ficou bom.


Junior


Responder

Gostei + 0

02/05/2006

Massuda

O valor de .RecordCount só é garantido para alguns tipos derivados de TDataSet, como é o caso de TTable.

No caso de TQuery e semelhantes, o método mais rápido é executar uma SQL do tipo...
SELECT COUNT(*) FROM tabela WHERE...



Responder

Gostei + 0

02/05/2006

José Henrique

Segundo Marco Cantù em ´Dominando o Delphi 6 - A Bíblia´ este comportamento é previsto quando o cursor é somente de avanço e dinâmico. O RecordCount = -1 indica que retornou registro(s) mas o tipo de cursor não permite saber quantos (talvez pelo custo?). A opção do Massuda é a indicada se precisamos do total de registros.


Responder

Gostei + 0

03/05/2006

Tremonti

Galera, Nao deu Nada certo.
Fiz varios testes e nada funcionou.

Não sei o que pode ser, de jeito nenhum.

Acontece somente com esta query no Sistema, todas as outras eu dou um RecourCount e funciona. Será que é porque essa tem um campo Text do SQL?

Mais uma coisinha, quando navego estre os registros pela barra de rolagem, ele me da o seguinte erro:

Invalid BLOB handle in record buffer

Alguem tem como me ajudar, por favor.

Grande Abraço a Todos...


Responder

Gostei + 0

03/05/2006

Adriano Santos

[quote:5a8a576c6c=´José Henrique´]Segundo Marco Cantù em ´Dominando o Delphi 6 - A Bíblia´ este comportamento é previsto quando o cursor é somente de avanço e dinâmico. O RecordCount = -1 indica que retornou registro(s) mas o tipo de cursor não permite saber quantos (talvez pelo custo?). A opção do Massuda é a indicada se precisamos do total de registros.[/quote:5a8a576c6c]

A resposta do [b:5a8a576c6c]José Henrique[/b:5a8a576c6c] com base na informação do Cantú está correta e eu também já tive este problema. Na época precisei usar o .Last e .First, mesmo assim ainda tinha problemas de vez em quando. Então nunca mais usei RecordCount, só o

SELECT COUNT(*) FROM TABELA


Até mesmo porque hoje eu trabalho com DBExpress.


Responder

Gostei + 0

03/05/2006

Adriano Santos

[quote:57a0882ce3=´José Henrique´]Segundo Marco Cantù em ´Dominando o Delphi 6 - A Bíblia´ este comportamento é previsto quando o cursor é somente de avanço e dinâmico. O RecordCount = -1 indica que retornou registro(s) mas o tipo de cursor não permite saber quantos (talvez pelo custo?). A opção do Massuda é a indicada se precisamos do total de registros.[/quote:57a0882ce3]

A resposta do [b:57a0882ce3]José Henrique[/b:57a0882ce3] com base na informação do Cantú está correta e eu também já tive este problema. Na época precisei usar o .Last e .First, mesmo assim ainda tinha problemas de vez em quando. Então nunca mais usei RecordCount, só o

SELECT COUNT(*) FROM TABELA


Até mesmo porque hoje eu trabalho com DBExpress.


Responder

Gostei + 0

01/11/2006

Rogick

Se for só para verificar se a Query veio vazia, use a expressão
  ...
           not(Query1.Bof and Query1.Eof);
           ...


É só uma dica, mas eu acho q as acima tb resolvem.


Responder

Gostei + 0

01/11/2006

Adriano Santos

Se for só para verificar se a Query veio vazia, use a expressão
  ...
           not(Query1.Bof and Query1.Eof);
           ...
É só uma dica, mas eu acho q as acima tb resolvem.


Pra saber se está ou não vazia eu uso:

  if qryQuery.IsEmpty then
    ...



Responder

Gostei + 0

01/11/2006

Martins

Tente usar:
 if Query1.IsEmpty then
 {...}


A dica do Massuda é muito válida.

Seu Banco e Paradox? Qual a estrutura dessa tabela? Tem índices?


Responder

Gostei + 0

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

Aceitar