Dúvida com DbGrid

Delphi

06/03/2009

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

Curtidas 0

Respostas

Prmcibor

Prmcibor

06/03/2009

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?


GOSTEI 0
Prmcibor

Prmcibor

06/03/2009

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.


GOSTEI 0
Paulo

Paulo

06/03/2009

Mas como eu faço isso?


GOSTEI 0
Woinch

Woinch

06/03/2009

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...


GOSTEI 0
POSTAR