2013-02-01 47 views
4

我试图创建我觉得应该是一个非常简单的报表。我有一个结果数据表与此类似:水晶报表中的总和组级别字段

ID Amount ChildID  Name Discount 
1  200  1   Billy $10 
1  200  2   Bobby $20 
2  100  1   Kenny $10 

我需要从组行级别的金额减去折扣的总和。然后最后我需要总结这些数额。因此,它看起来就像这样:

ID: 1 Amount: $170 
    Billy  $10 
    Bobby  $20 
ID: 2, Amount:$90 
    Kenny  $10 

Total:  $260 

我创建了一个公式从小组的金额减去折扣的总和。现在我怎样才能在报告页脚中汇总这些值?

+0

Crystal Reports没有一个简单的方法(或者根本就没有办法,AFAIK)展望未来并计算每个ID的折扣总额,然后从您的金额中扣除。在我头顶,你要么**(1)**计算每个分组的金额(170美元和90美元),然后有一个子报表来显示孩子,或**(2)**让您的SQL查询提前计算出金额,并简单地显示该金额而不是基本金额。希望这是有道理的。 – LittleBobbyTables

+0

谢谢。必须为每个组运行一份子报告将是非常低效的。因此,如果我预先计算了170和90,那么我如何在页脚中进行汇总。我试着总结了200和100,但总共得到500,因此总计了每一行。 – xr280xr

回答

3

您需要通过全局变量跟踪正在运行的小计。像这样的组尾公式应该这样做:

whileprintingrecords; 
numbervar subtotal; 

//Update subtotal with the group's amount minus the total discounts for that group 
subtotal := subtotal + ({table.amount} - sum({table.discount},{table.ID})) 

报表页脚,你现在可以自由地使用该变量的总。

+0

谢谢。我只是在理解语法。宣布印刷记录是必要的吗? [此链接](http://publib.boulder.ibm.com/infocenter/radhelp/v7r5/index.jsp?topic=%2Fcom.businessobjects.integration.eclipse.designer.doc%2Fhtml%2Ftopic738.html)说如果包含一个组字段,它在打印时已经处理。 – xr280xr

+0

这是令人惊讶的不起作用。我在你写的时候尝试过(除了我的实际列名),它只输出90美元。只有最后一行的值。 – xr280xr

+1

是的,'whileprintingrecords'是必要的。由于以下几个原因,您可能只会获得公式的最后一个值......您是否已将公式放入报告中的组织脚注?你是否包含公式的“小计+”部分? – Ryan