RecordCount = 0 no OnCreate do Form

Delphi

23/03/2005

em um form preciso verificar quantos registros tem na query (que vai ser exibido em um DBCrtlGrid) para tomar decisões com base neste valor. O problema é que o RecordCount sempre retorna zero. Já observei e a query está ativa.
Quando o form é criado por mim (ou seja, quando comento a linha que faz o delphi criar automaticamente o form) tudo funciona perfeito, mas um outro código deixa de funcionar .
Como resolvo e porque o RecordCount sempre mostra zero?


Raserafim

Raserafim

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

23/03/2005

Qual o seu banco de dados e o componente de acesso?


GOSTEI 0
Eniorm

Eniorm

23/03/2005

Veja, se vc usar o IBX ou algum componente semelhante, assim que abrir sua query, usa o FetchAll assim funciona, tipo veja ai:

IBQuery1.Open;
IBQuery1.FetchAll;


Caso vc use um componente diferente, procure por algo semelhante na ajuda do mesmo.

Abraços,


GOSTEI 0
Gandalf.nho

Gandalf.nho

23/03/2005

FetchAll não é muito recomendado, principalmente em rede, pq irá degradar a performance da aplicação ao trazer todos os registros para o cliente. O melhor a fazer nesse caso é usar um SELECT COUNT(*) FROM tabela


GOSTEI 0
Macario

Macario

23/03/2005

Ola para ter certeza de que a query esta vazia teste usando

if Query1.isEmpty then
  ShowMessage(´Query vazia´);


Se retornar true verifique sua instrução SQL.


GOSTEI 0
Raserafim

Raserafim

23/03/2005

a base de dados que estou utilizando é o FireBird 1.5 com o componente de acesso MDO.
Macario, coloquei o código que vc citou no OnCreate e realmente está vazia. Porém se eu colocar este mesmo comando em algum outro evento, como o OnShow aí não está .
O problema é de fato o que relatei: o RecordCount sempre mostra zero, mesmo quando tem vários registros. Isso só acontece quando o form é criado automaticamente pelo delphi.


GOSTEI 0
Eniorm

Eniorm

23/03/2005

Qdo vc usa o Open (ou Active := True) na query on evento OnCreate, com qual instrução SQL está sendo executado?


GOSTEI 0
Macario

Macario

23/03/2005

raserafim posta o codigo aqui pra gente analisar :roll:


GOSTEI 0
Raserafim

Raserafim

23/03/2005

acabei de testar com várias query´s diferentes e com todas acontece a mesma coisa (ou seja, não é problema no código da query). Continua a mesma coisa: caso o form seja criado pelo delphi sempre retorna zero, caso eu comente a linha e crie eu mesmo o form então retorna o valor correto. para todas as querys.


GOSTEI 0
POSTAR