on 10-09-2013 4:02 PM
O sistema é o Crytal Reports para Visual Studio.
Tenho o relatório principal de financiamento bancário, e um sub relatório dos créditos bancários( um financiamento pode ter vários créditos bancários), funcionando perfeitamente.
Acontece que preciso somar o valor de cada sub relatório e totalizar no relatório principal.
Já tentei criar formula com Formula Fields com variáves do tipo Shared e global no sub relatório, mas não ficam disponibilizadas relatório principal.
Solicito Ajuda.
Carlos Almeida
O código do relatório principal
"select f.id, f.idcliente, f.contratocaixa, f.tipoescritura, f.incluirdespesa, f.saldodevedor, f.totalapagar, f.centrodecusto, f.banco, f.agencia,f.valordespesa, f.totalliberado, f.diferencafinanciamento, f.dataassinatura, c.nome FROM financiamento f inner join cliente c on f.idcliente = c.id"
Sub Relatório:
"SELECT * FROM creditobancario"
Código que carrega o rel. principal e sub rel.:
CR_RelFinGeral cr1 = new CR_RelFinGeral();
ReportDocument rdCrBanco;
cr1.SetDataSource(financiamento);
rdCrBanco = cr1.OpenSubreport("Cr_CrBco.rpt");
rdCrBanco.SetDataSource(credBanco);
cRViewerRelGeral.ReportSource = cr1;
Preciso somar o sub rel e totalizar no principal.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Você pode fazer isso de dois jeitos.
1) colocar o total na SQL principal e arrastar o campo "TotalCreditoBancario" para o rodapé do relatório
- nesse caso, o registro será repetido em todas as linhas de dados e pode deixar o relatório lento.
select
f.id,
f.idcliente,
f.contratocaixa,
f.tipoescritura,
f.incluirdespesa,
f.saldodevedor,
f.totalapagar,
f.centrodecusto,
f.banco,
f.agencia,
f.valordespesa,
f.totalliberado,
f.diferencafinanciamento,
f.dataassinatura,
c.nome,
( select sum(valor) FROM creditobancario ) as TotalCreditoBancario
FROM financiamento f
inner join cliente c on f.idcliente = c.id
2) adicionar um segundo comando no relatório principal, e também puxar o valor total para o rodapé.
ComandoPrincipal = seu sql
select f.id, f.idcliente, f.contratocaixa, f.tipoescritura, f.incluirdespesa, f.saldodevedor, f.totalapagar, f.centrodecusto, f.banco, f.agencia,f.valordespesa, f.totalliberado, f.diferencafinanciamento, f.dataassinatura, c.nome FROM financiamento f inner join cliente c on f.idcliente = c.id
SomaCreditos = select sum(valor) as TotalCreditoBancario FROM creditobancario
E arrastar o TotalCreditoBancario para o rodapé do relatório.
[]'s
Fabio.
Bom dia Carlos,
tente somar no SQL do relatório principal os créditos bancários, imagino que facilite seu relatório.
Por exemplo: eu tenho uma consulta que soma todo o movimento do item no relatório principal, e quando chamo o subreport, mostra detalhado o movimento.
-- SQL do relatório principal, mostra somente total
SELECT
ROW_NUMBER() OVER (ORDER BY Sum(T0.[LineTotal]) DESC) as Seq
, T0.ItemCode
, T1.ItemName
, T1.InvntryUom
, sum(T0.[Quantity]) as Qtde
, sum(T0.[LineTotal]) as ValorTotal
FROM IGE1 T0
INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode
INNER JOIN OIGE T2 ON T0.DocEntry = T2.DocEntry
WHERE (T2.[DocDate] >= {?DocDate} )
GROUP BY T0.[ItemCode], T1.[ItemName], T1.InvntryUom
ORDER BY Sum(T0.[LineTotal]) DESC
-- SQL do relatório analitico (passo o código e a data, para detalhar o item).
SELECT
T0.DocEntry,
T1.DocDate,
T1.[Ref2],
T0.ItemCode,
T0.Dscription,
T3.ItmsGrpNam,
T2.InvntryUom,
T0.Quantity as QtdeBaixa,
T0.LineTotal
FROM IGE1 T0
INNER JOIN OIGE T1 ON T0.DocEntry = T1.DocEntry
INNER JOIN OITM T2 ON T0.ItemCode = T2.ItemCode
INNER JOIN OITB T3 ON T3.ItmsGrpCod = T2.ItmsGrpCod
WHERE T1.DocDate >= {?DocDate} and T0.ItemCode = {?Itemcode}
Se você puder postar o SQL que você usa no relatório e sub ajudaria.
[]'s
Fabio
SAP 8.82 PL13 (SAP 9.0 PL6 em testes).
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
108 | |
12 | |
11 | |
6 | |
5 | |
4 | |
3 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.