Fórum Somar no QuickReport #131329

29/03/2010

0

Estou fazendo um relatório onde são listados duas colunas de valores numericos Gostaria de somar o valor da coluna 1 com o valor da coluna 2 e mostar o valor na coluna 3. Isso linha por linha, não quero um valor total no final. Alguem pode dar uma ajuda?
Lucas Souza

Lucas Souza

Responder

Posts

30/03/2010

Douglas Fernandes

No evento BeforePrint do QuickReport você pode fazer isto.
Responder

Gostei + 0

30/03/2010

Douglas Fernandes

Cara segue um exemplo simplorio do que você possa fazer ai:

procedure TFrmTeste.DetailBand1BeforePrint(Sender: TQRCustomBand;var PrintBand: Boolean);
  Var
  Sum : Integer;
begin
 Sum              := QAux1.FieldByName('Valor1').AsInteger + QAux1.FieldByName('Valor2').AsInteger;
 QRLabel2.Caption :=  IntToStr(Sum);
end;
Responder

Gostei + 0

30/03/2010

Lucas Souza

Douglas QAux1 no seu exemplo se refere a quê? a query?   Se for a query dá erro se uso FieldByName.   Tentei fazer assim:   QRLabel12.Caption := dmGeral.QryQuantExamesE.FieldValues['campocoluna1'] + dmGeral.QryQuantExamesE.FieldValues['campocoluna2'];   Ele soma só o resultado da primeira linha e coloca esse resultado em todas as linhas.    
Responder

Gostei + 0

30/03/2010

Robson Catunda

Lucas.Dolci,...

Você pode fazer isso de três formas distintas:

1 - Criando em seu dataset um campo do tipo calculed ou um do tipo internalcalc, e no evento OnCalcField do dataset faz o cálculo,

dmGeral.QryQuantExamesE.FieldByName('totalcoluna3').asInteger := dmGeral.QryQuantExamesE.FieldByName('campocoluna1').asInteger + dmGeral.QryQuantExamesE.FieldByName('campocoluna2').asInteger;

2 - Criando um campo pra soma dentro da sql do dataset:

select compocoluna1,campocoluna2,(coalesce(campocoluna1,0)+coalesce(campocoluna2,0)) as totalcoluna3 from Exames

3 - Utilizando o componente QRExpr do próprio QuickReport.

Obs.: na opção 1 utilizei fieldbyname no lugar de fieldvalues para determinar valores nulos como zero, pois dará erro se pegar valor null. E na opção 2 o coalesce tem a mesma finalidade, ou seja, se coluna1 ou coluna2 forem null será considerado o valor como zero, pois de outra forma o sql ignora os calculos com valor null. 
Responder

Gostei + 0

31/03/2010

Lucas Souza

Robson Não consegui fazer do geito que você sugeriu, fiz da seguinte forma: na banda detail: procedure TqrExamesQuantidadeE.QRBand4BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
//var1 := 0;
QRLabel12.Caption := dmGeral.cdsQuantExamesE.FieldValues['PESO'] * dmGeral.cdsQuantExamesE.FieldValues['TOTAL'];
var1 := var1 + strtoint(QRLabel12.Caption);
//QRLabel13.Caption := inttostr(var1);
end;      na banda page footer:   QRLabel14.Caption := inttostr(var1);     Moral da história: o QRLabel12 de cada linha pega a multiplicação do campo PESO e TOTAL, até aí tudo bem, depois soma tudo e mostra no QRLabel14.   Soma direitinho sem problemas, mas quando peço para imprimir ou quanso salvo em PDF ele duplica o valor do QRLabel14, se o resoltado da soma é 1000, se imprimi sai 2000 e sem imprimo novamente imprime 4000, ele vai duplicando o campo QRLabel14 a cada impressão ou salvamento.
Responder

Gostei + 0

06/08/2014

Joao Silva

SUM(coluna1) - SUM(coluna2)
Responder

Gostei + 0

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

Aceitar