Não conta registros

01/12/2005

Oi amigos, blz?

Fiz um processo, conforme código abaixo, que faz uma pesquisa de fornecedores na tabela CLIE_FORNEC, e ao final é feita a contagem dos registros encontrados. Pesquisei algumas dicas, porém não deram certo. Eu sei fazer isso de outra maneira, mas um pouco complicada.

Gostaria que vissem o que há de errado no código.

Fico no aguardo.

Um abraço,

// codigo

with dmClieFor.cdsClieFor do
begin
close;
commandText := ´select * from CLIE_FORNEC ´ +
´ where COD_CLIE_FOR = ´ + edtProcurar.Text +
´ and TIPO = ´ + QuotedStr(´F´);
open;


if not isempty then
begin
dbgrid1.DataSource := dmClieFor.dsClieFor;
TotalRegistros := dmClieFor.cdsClieFor.RecordCount; //variável definida como integer

lblTotalReg.Caption := inttostr(TotalRegistros);

if dmClieFor.cdsClieFor.RecordCount > 1 then

dbnavigator1.DataSource := dmClieFor.dsClieFor;
end
else
Application.MessageBox(´Código do fornecedor não encontrado!´, ´Informação´,
MB_OK + MB_ICONINFORMATION);

end;


Rogério


Roger1976

Respostas

01/12/2005

Carlosfim

Cara, eu sempre tenho problemas ao utilizar RecordCount. Não sei se é tilt mesmo ou se sou eu que deixo de fazer algma coisa.

Mas, para driblar o problema, quando eu preciso do total de registros, eu sempre vou para o último registro

dmClieFor.cdsClieFor.last;


e aí a propriedade RecordCount retorna o número correto. Depois, se necessário, eu volto para o primeiro registro com

dmClieFor.cdsClieFor.first;


Comigo funciona.

Até +


Responder Citar

02/12/2005

Roger1976

Carlos, segui sua sugestão, o que acontece é que o label não está recebendo o total de registros, ainda não sei o por quê.

Valeu pela dica, caso eu descubra uma outra maneira, postarei, se tiver outra sugestão, é só postar.

Obrigado!


Responder Citar

03/12/2005

Roger1976

Carlos, resolvi o problema da seguinte forma:

1 - Abrir o editor de campos do respectivo clientdataset (Fields Editor - cdsClieFor)
2 - Criar um campo, por exemplo, TOT_REG do tipo Aggregate
3 - Colocar a função na propriedade EXPRESSION do campo - count(campo) e alterar o active para true, para que o sistema enchergue a função
4 - Passar a propriedade AGGREGATEACTIVE para TRUE do clientdataset senão o número não aparecerá
5 - Inserir um DBTEXT
6 - Na consulta, como eu fiz no meu sistema, coloquei uma condição onde se tiver dados, a propriedade datasource do dbtext recebe os dados do datasource que estiver utilizando (no meu caso, dsClieFor), e não esquecer de definir o campo TOT_REG na propriedade DATAFIELD do dbtext

Aí kra, funciona que é uma blz, porém, como todos nós estamos cansados de saber, existem outras formas de se resolver um problema, isso não significa que a solução aicma é a mais prática, pode haver outras mais simples.

Espero que vc e os demais amigos que forem ler este tópico possam analisar e dar sugestões.

Valeu!!!


Responder Citar

05/12/2005

Carlosfim

Blz, roger.

Vou usar sua sugestão.

Se eu encontrar outra forma eu posto aqui!


Até +


Responder Citar