Crystal Reports动态分组

时间:2016-01-21 00:47:04

标签: crystal-reports

我是水晶报道的新手,所以我不知道该怎么做

如何使用此公式创建一个组:
在主报告中

if DistinctCount ({PROD.GROUP_ID}, {PROD.ID_NO})=1 then
//group by
PROD.GROUP_ID
else if DistinctCount ({PROD.GROUP_ID}, {PROD.ID_NO})>1 and 
   ({PROD.GROUP_ID}=previous({PROD.GROUP_ID}) or 
   {PROD.GROUP_ID}=next({PROD.GROUP_ID})) then
//group by 
    PROD.DOC_ID
else
//group by 
    PROD.GROUP_ID

请帮助我,这是我在水晶报道中的新手,我需要做到这一点

我的主要报告中有这个:

在组头中,它由{PROD.GROUP_ID}组分组 Sub_Car
Sub_Airplane

我的一些子报告在按{PROD.GROUP_ID}分组时正在工作,而某些子报告在{PROD.DOC_ID}

分组时有效

1 个答案:

答案 0 :(得分:0)

你试图将分组的结果分组以重新组合,这是你编写公式的方式所不可能的,因为DistinctCount ({PROD.GROUP_ID}, {PROD.ID_NO})本身就是分组的输出。

要实现此目的,您需要使用子报告并传递非重复计数以用作子报告中的分组。

转到另一部分group footer b并将子报告放在那里并使用Change sub report linksDistinctCount ({PROD.GROUP_ID}, {PROD.ID_NO})传递给子报告

在子报告中,它将显示在参数字段中,{?DistinctCount ({PROD.GROUP_ID}, {PROD.ID_NO})}现在将您的公式创建为@grouping并写下以下代码:

if {?DistinctCount ({PROD.GROUP_ID}, {PROD.ID_NO})}=1 then
//group by
PROD.GROUP_ID
else if {?DistinctCount ({PROD.GROUP_ID}, {PROD.ID_NO})}>1 and 
   ({PROD.GROUP_ID}=previous({PROD.GROUP_ID}) or 
   {PROD.GROUP_ID}=next({PROD.GROUP_ID})) then
//group by PROD.DOC_ID
else
//group by PROD.GROUP_ID

现在使用公式对子报表进行分组...如果您希望在主报表中显示数据或删除主报表的所有字段,只显示子报表