Fórum RecordCount dando erro #371218

15/06/2009

0

Tenho uma variável pública que deve receber o ´RecordCount´ de uma tabela, para em seguida ser usada como fonte para um auto-incremento.
o problema é que o RecordCount da tabela está retornando o valor errado.
A tabela possui 3 registros cadastrados (já verifiquei até pelo IBConsole) e a variável continua recebendo 0.

PS: a tabela possui um filtro, mas o filtro só é ativado após a variável receber o valor do recordcount.

PS2: a tabela e todo meu banco de dados é Interbase (*.gdb)


Demytrius

Demytrius

Responder

Posts

15/06/2009

Steve_narancic

depois do open, tente dar um FETCHALL


Responder

Gostei + 0

15/06/2009

Danielrsanches

certifique-se de que vc não está tentando obter o valor de RecordCount com a tabela fechada ... nesse caso será retornado apenas o 0 mesmo ... se a tabela já está aberta, tente testar o filtro que está fazendo, para ver se está realmente correto e retornando registros...

abraços !!


Responder

Gostei + 0

16/06/2009

Demytrius

qual é a sintaxe para o fetchall?


Responder

Gostei + 0

16/06/2009

Pestana_

que componentes de acesso a dados você esta utilizando?


Responder

Gostei + 0

16/06/2009

Demytrius

IBDatabase
IBTable
DataSource
IBTransaction


PS: tenho um IBQuery e um Datasource para este query mas não utilizo para fazer os filtros, apenas para mostrar algumas informações selecionadas em um dbgrid.


Responder

Gostei + 0

16/06/2009

Pestana_

então se você quer saber a quantidade ´exata´ de registros retornado pelo IBQuery você precisa fazer o FetchAll como o steve_narancic já citou!

IBQuery.FetchAll


isso é necessário porque o IBQuery não traz todos os registros para memória de uma única vez, os registros são trazidos aos poucos. Este é o motivo que o retorno de um select é muito rápido. Agora se você fizer um FetchAll você esta forçando o componente a trazer todos os registro para memoria, mas o sistema sofrerá com a performance, a menos que seja poucos registros retornado!


Responder

Gostei + 0

16/06/2009

Pestana_

já estava me esquecendo o método tem que ser chamado logo apos ter aberto a query.

IBQuery.Open;
IBQuery.FetchAll



Responder

Gostei + 0

17/06/2009

Demytrius

Mas eu não utilizo a query no cadastramento dos registros. o filtro é feito diretamente na tabela

variavel := datamodule.ibtable.recordcount;
datamodule.ibtable.filter := ´´
datamodule.ibtable.filtered := true;


Responder

Gostei + 0

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

Aceitar