Esse problema é clássico. Acontece até mesmo com outros componentes de
consulta SQL (TQuery, TSQLQuery, TADOQuery, etc.) O que ocorre é que não foi
feito o fetch de todo o conjunto de dados retornado pela consulta. À medida
que vc for navegando pelo dataset (Next, Prior, MoveBy, etc.) ou utilizá-lo
para exibição de dados em um controle data-aware (Ex.: TDBGrid) é que será
feito um fetch sob demanda (por assim dizer) dos dados da consulta. Por isso
que RecordCount sempre retorna inicialmente 0.

Para resolver isso, tendo sempre o retorno da quantidade de registros
retornados na propriedade RecordCount, vc teria que forçar o fetch de todos
os registros para o dataset, através de algum método semelhante ao
FetchAll() de um TQuery. A vantagem é que vc vai ter sempre o retorno
correto do RecordCount, mas em compensação vc corre o risco de gerar um
tráfego desnecessário na aplicação, principalmente se o código em questão
for executado por muitas estações de trabalho concorrentemente, além de
ferir indiretamente o conceito da filosofia cliente/servidor, que consiste
em recuperar para a estação cliente apenas o conjunto de dados que realmente
será trabalhado.

Como sugestçao, experimente usar TZQuery em conjunto com TDataSetProvider e
TClientDataSet.
Sds.

>From: "jeannefoliveira" <[EMAIL PROTECTED]>
>Reply-To: delphi-br@yahoogrupos.com.br
>To: delphi-br@yahoogrupos.com.br
>Subject: [delphi-br] ZQuery
>Date: Wed, 26 Apr 2006 12:54:43 -0000
>
>Oi gente, tudo bem? To com o seguinte probleminha no meu codigo. O
>zQuery ta ligado a um ZConnection.
>
>dm.zQuery.SQL.Text := DM.msqlEtapasPrefixo.AsString;
>dm.zQuery.Open;
>cont := dm.zQuery.RecordCount;
>
>Onde este Dm.msqlEtapasPrefixo.AsString está passando um SELECT dos
>campos e os dados que quero que a tabela contenha. O problema eh o
>seguinte, a variavel cont está recebendo 0. Mas a tabela que estou
>fazendo o SELECT contém muitos dados. E ja testei o SELECT diretamente
>no banco e mostra os dados, nao eh erro no comando.
>
>Alguem poderia me ajudar
>
>
>
>
>
>
>

_________________________________________________________________
MSN Messenger: converse com os seus amigos online.
http://messenger.msn.com.br



--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]




Links do Yahoo! Grupos

Responder a