【问题标题】:crystal reports conditional formatting for summary fields水晶报表汇总字段的条件格式
【发布时间】:2012-03-13 01:23:51
【问题描述】:

我正在尝试在我的汇总字段上创建一个十进制格式公式。数据库中的值可以有 0、1 或 2 位小数。我从这个开始:

If (CurrentFieldValue mod 1 = 0) Then
            0
Else If (CurrentFieldValue mod .1 = 0) Then
            1
Else
            2

在一个简单的单个数据字段上,这可以根据来自我的数据库的数据显示带有 0、1 或 2 位小数的值。相同的公式不适用于包含组数据的报告中的汇总字段。有什么想法吗?

编辑:由于我不知道如何在注释中格式化代码,我将在此处解决使用公式的建议:

没用。公式:

Sum ({myTable.dataValue}, {myTable.groupField})

然后我用了:

If ({@formula} mod 1 = 0) Then
    0
Else If ({@formula} mod .1 = 0) Then
    1
Else
    2

而且我仍然得到所有数字的整数。我的四舍五入设置为 0.01,没有公式。我也需要一个四舍五入的公式吗?我仍然不明白为什么这适用于个人价值,但不适用于组摘要。

【问题讨论】:

  • 尝试在上面引用的代码之前添加whileprintingrecords;
  • @LeeTickett 没有骰子,我仍然得到所有整数值

标签: crystal-reports


【解决方案1】:

好的-原来这是由于我们对 mod 功能缺乏了解:)

所有 mod 1 实际上返回 0。这是您需要使用的公式:

if {ER100_ACCT_ORDER.ER100_ORD_TOT} * 100 mod 100 = 0 then
 0
else if {ER100_ACCT_ORDER.ER100_ORD_TOT} * 100 mod 10 = 0 then
 1
else
 2

:)

【讨论】:

  • 所以你是说 2.5 mod 1 = 0?余数不是 0.5 吗?
  • 在晶体模数中定义为:Divides x by y and returns a remainder that is a whole number
  • 我每天都找到一个讨厌水晶的新理由。 publib.boulder.ibm.com/infocenter/radhelp/v7r5/…
  • mod 运算通常是整数运算,不限于水晶。严格来说并不意味着余数。
【解决方案2】:

不如只创建一个公式字段而不是使用内置的汇总字段:

sum({mytable.myfield})

然后你可以使用你的条件格式:

If ({@formula} mod 1 = 0) Then
        0
Else If ({@formula} mod .1 = 0) Then
        1
Else
        2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    相关资源
    最近更新 更多