【问题标题】:Crystal Reports Dynamic GroupingsCrystal Reports 动态分组
【发布时间】:2016-01-21 00:47:03
【问题描述】:

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

我怎样才能用这个公式组成一个组:
在主报告中

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}
分组的 副车
子飞机

我的一些子报告在按 {PROD.GROUP_ID} 分组时有效,而一些子报告在按 {PROD.DOC_ID} 分组时有效

【问题讨论】:

    标签: crystal-reports


    【解决方案1】:

    您正在尝试将分组的结果分组以重新分组,这在您编写公式的方式中是不可能的,因为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
    

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

    【讨论】:

    • @grouping 公式未显示在更改组中。对不起另一个问题,但这是为什么呢?
    • 如果出现,您需要使用报告中的字段...将字段放在报告中并尝试使用公式
    • 为什么在我把它放在子报告中的更改组中仍然找不到@grouping。当我在组名公式编辑器中指定公式时,它会显示“此函数无法使用,因为必须先对其进行评估”
    • 你把子报告放在哪里了。应该评估第一个主报告,然后将值传递给子报告
    • 我已将子报表放在组页脚中
    猜你喜欢
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多