【问题标题】:Sorting Cross-Tab columns in Crystal Reports在 Crystal Reports 中对交叉表列进行排序
【发布时间】:2021-06-24 15:55:55
【问题描述】:

我一直在从事 Crystal Reports 项目,我必须在其中显示按月分组的值的总和。

我必须从参数中的指定日期开始处理一年的范围。所以我使用了交叉表,按@MONTH_DISPLAY 的列分组,定义为:月({ASIENTOI.DATE})。 重要的事实是我必须从最早的月份到一年对列进行排序。意思是: 如果用户将日期设置为 10-07-12,我必须显示如下排序的列: 七月 (2012) - ... - 六月 (2013)。

问题是 Crystal Reports 设置的范围是这样的: 一月 (2013) - ... - 六月 (2013) - 七月 (2012) - ... - 十二月 (2012)。

我只是找不到修改排序的方法。

【问题讨论】:

    标签: sorting crystal-reports report


    【解决方案1】:

    通过设计器对交叉表列进行排序的唯一方法是在降序或升序之间进行选择,这意味着水晶报表将按字母顺序对您的字段进行排序。

    一种可能的解决方法是,例如,将带有下划线的数字放在您想要在数据源中排序的字符串之前(例如 01_July (2012)、02_August (2012)...13_June (2013))并使用升序,然后隐藏数字,进入“交叉表专家”部分并在交叉表选项卡上选择列下的“组选项”(对不起,我只有意大利语)

    然后在选项选项卡上选择下面的选项

    点击公式按钮并使用函数

    Right(yourField,Length(yourField)-3)
    

    排除前缀,这样交叉表列上就不会出现“01_July (2012)”,而是“July (2012)”。这应该可以解决问题

    【讨论】:

      【解决方案2】:

      另一个有用的解决方法是。

      创建一个新公式说column1 = ToText({yourField}, "yyyy") + '-' + ToText({yourField},"MM")。 将此字段用作交​​叉表列。

      现在您的交叉表列将被排序为

      2020-01 | 2020-02 | 2020-03 |...

      现在跨表专家>列>组选项>选项卡:选项>✓自定义组名字段>✓使用公式作为组名。

      添加Left({@column1}, 5) & MonthName(ToNumber(Right({@column1}, 2)),True) 因此最终结果

      2020-Jan | 2020-Feb | 2020-Mar |...

      根据月份日期对列进行排序,但按月份名称打印!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多