RecordCount sempre -1

Delphi

02/05/2006

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

Curtidas 0

Respostas

Titanius

Titanius

02/05/2006

É 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


GOSTEI 0
Tremonti

Tremonti

02/05/2006

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


GOSTEI 0
Siam

Siam

02/05/2006

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


GOSTEI 0
Araujojunior

Araujojunior

02/05/2006

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


GOSTEI 0
Massuda

Massuda

02/05/2006

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...



GOSTEI 0
José Henrique

José Henrique

02/05/2006

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.


GOSTEI 0
Tremonti

Tremonti

02/05/2006

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...


GOSTEI 0
Adriano Santos

Adriano Santos

02/05/2006

[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.


GOSTEI 0
Adriano Santos

Adriano Santos

02/05/2006

[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.


GOSTEI 0
Rogick

Rogick

02/05/2006

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.


GOSTEI 0
Adriano Santos

Adriano Santos

02/05/2006

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
    ...



GOSTEI 0
Martins

Martins

02/05/2006

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


A dica do Massuda é muito válida.

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


GOSTEI 0
POSTAR