Fórum Dúvida com DbGrid #368862

06/03/2009

0

Imagine uma query trazendo um fetch de dados e mostrados num DBgrid. Acontece, que gostaria que o Dbgrid tivesse uma linha(não coluna) que me mostrasse o somatório de todos os campos numéricos. Esse somatório não tem na query e nem o pode ter. Existe como fazer isso num DBgrid? Quando eu usava o cxGrid da DevExpress, ele me dava essa condição, mas com o DBGrid eu não sei fazer e já vi. Alguém sabe?


Paulo

Paulo

Responder

Posts

06/03/2009

Prmcibor

Você pode usar um campo calculado (Calculated Field) no seu componente que está associado ao dbgrid.

Depois de criado o campo calculado, no evento OnCalcFields vc faz e soma e joga o valor nesse campo calculado.

Voce está usando qual componente de acesso a dados?


Responder

Gostei + 0

06/03/2009

Prmcibor

Na verdade a solução anterior é para coluna, para linha vc deve digitar um clientdataset e fazer um while somando os valores e depois adicionando uma linha no final como se fosse um banco de dados.


Responder

Gostei + 0

06/03/2009

Paulo

Mas como eu faço isso?


Responder

Gostei + 0

06/03/2009

Woinch

Primeiro traga uma nova coluna no DataSet ORDEM trazendo o valor ZERO como padrão. Faça um loop passando por todo o DataSet da seguinte maneira:

while not DataSet.Eof do
begin
  dTotal := dTotal + FieldByName(´COLUNA_A_SER_TOTALIZADA´).AsFloat;
  Next;
end;


Insira uma nova linha no DataSet com o conteúdo ORDEM = 1 e com o valor da variável dTotal:

  DataSet.Insert;
  DataSet.FieldByName(´ORDEM´).AsInteger := 1;
  DataSet.FieldByName(´COLUNA_A_SER_TOTALIZADA´).AsFloat := dTotal;
  DataSet.Post;


Lembre-se que para trazer a linha de totalização ao final do Grid você deve setar em primeiro lugar a coluna ORDEM na propriedade IndexFields.
Espero ter ajudado...


Responder

Gostei + 0

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

Aceitar