Não conta registros

01/12/2005

0

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

Roger1976

Responder

Posts

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

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

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

05/12/2005

Carlosfim

Blz, roger.

Vou usar sua sugestão.

Se eu encontrar outra forma eu posto aqui!


Até +


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar