我正在尝试创建一个Crystal Report。它具有的参数之一是布尔标志,它可以更改报告的分组。 我要做的是从公式中添加3个级别的分组。
我写的代码是:
if {?summarized_detailed} = true then
'Store Code : ' + {SNV_SP_ProfitabilityAndBreakEvenPerStore;1.WhsCode}
else
if {?season_supplier} = true then
'Store Code : ' + {SNV_SP_ProfitabilityAndBreakEvenPerStore;1.WhsCode} + ChrW(10) + 'Season : ' + {SNV_SP_ProfitabilityAndBreakEvenPerStore;1.SEASON} + ChrW(10) + 'Brand : ' + {SNV_SP_ProfitabilityAndBreakEvenPerStore;1.BRAND}
else
'Store Code : ' + {SNV_SP_ProfitabilityAndBreakEvenPerStore;1.WhsCode} + ChrW(10) + 'Supplier : ' + {SNV_SP_ProfitabilityAndBreakEvenPerStore;1.CardCode} + ChrW(10) + 'Brand : ' + {SNV_SP_ProfitabilityAndBreakEvenPerStore;1.BRAND}
{?summarized_detailed}
是参数(分组的标志)。
如果他选择true
,则报告必须包含列 - > Store Code
,Season
或Supplier
(基于另一个flag-parameter)和Brand
。
我拥有的输出层:
Name of Col1 Name of Col2 Name of Col3 Store: Value for Store Code, Season or Supplier: Value for Season or Supplier, Brand: Value for Brand | total Brand Col1 total Brand Col2 total Brand Col3 ....
使用此代码,我会得到我想要的结果。所有数据库的行都根据这些组分开。 问题是,我希望我的报告中的每一列都有总和。但我不能这样做,因为上面的公式,只创建了一个联合组。所以,我只能对每个品牌的细节进行总结。
我想要的输出层:
Name of Col1 Name of Col2 Name of Col3 Store: Value for Store Code | Seas or Sup: Value for Season or Supplier | Brand: Value for Brand | total Brand Col1 total Brand Col2 total Brand Col3 //when supplier or season within all groups changes (not included in report) -------------------------------------------------------------------------------------------- Total Supplier or Season: total Sup/Season Col1 total Sup/Season Col2 total Sup/Seas Col3 //when store within all groups changes (not included in report) Total Store: total Store Col1 total Store Col2 total Store Col3 ---------------------------------------------------------------------------------------------
使用total Brand Col1
我想对同一品牌的每个字段的所有详细信息行进行摘要。
使用total Supplier Col1
我想为同一供应商的每个字段汇总所有品牌。
使用total Store Col1
我想为每个商店的每个字段总计所有供应商。
如何计算这些总数并仅在季节或供应商更改时显示这些总计,并且当商店更改时没有关于工会组的更改?
或者是否有一种更简单,更好的方法可以根据参数从公式中制作这3组,但是让它们分开以便我可以控制它们并进行总结?
答案 0 :(得分:0)
这就是我处理这类要求的方式:
如果您想要最多3组,但可能更少,则需要创建两个不同的公式字段。在报表设计中,首先将分组设置为Store_Code上的分组,然后将其他两个公式字段设置为分组。
如果您希望进行三级分组时,refresh / runtime参数为FALSE,则公式应如下所示:
Group1_Formula1: if {?param} = TRUE then '' else {Season}
然后是下一个:
Group2_Formula: if {?param} = TRUE then '' else {Brand}
如果您想要总计/小计,只需将它们作为摘要字段放在组标题中,并使用条件显示来根据需要禁用它们。
结果将是,即使总是在所有三个级别上进行分组,对于始终有效的" Store_Code"下面的子组。如果{?Param} = TRUE,则每个子组只有一组所有记录,实际上意味着没有发生分组。
一个警告:这假设您没有使用打印时间评估,例如:打印之前/之后等,执行分组所需的任何相关公式。