【问题标题】:Crystal Reports - Disable default rounding/Show all decimalsCrystal Reports - 禁用默认舍入/显示所有小数
【发布时间】:2015-07-28 12:33:37
【问题描述】:

如果我创建一个仅包含 1/1000 的公式字段 A,然后将其拖到报表中,它将显示“0,00”,因为默认小数位数设置为 1.00,默认舍入设置为 0.01类型为 Number 的字段。 没问题。 调整小数和四舍五入后,将显示 0,001。

当我创建仅包含 {@A} 的公式字段 B 并增加小数并四舍五入时,它将显示为“0,001000000000”。

但是如果我使用 A 创建一个文本,totext({@A}) + 'test',结果将是“0,00 test”,我想不出一种方法来显示正确的“0,001 test” " 不添加 totext({@A},3)。我不想使用四舍五入,因为 A 中的小数位数会有所不同,而且我不想在末尾显示任何零。

我确实修改了这段代码(可用于数字字段的小数条件格式):

If CurrentFieldValue = Int(CurrentFieldValue) Then    0
Else If CurrentFieldValue * 10 = Int(CurrentFieldValue * 10) Then 1
Else If CurrentFieldValue * 100 = Int(CurrentFieldValue * 100) Then 2
Else If CurrentFieldValue * 1000 = Int(CurrentFieldValue * 1000) Then 3
Else If CurrentFieldValue * 10000 = Int(CurrentFieldValue * 10000) Then 4
Else DefaultAttribute

If {@A}= Int{@A} Then totext({@A},0)
Else If {@A}* 10 = Int{@A}* 10) Then totext({@A},1)
...

它可以工作,但我希望我不需要所有额外的代码,我的 Crystal Reports 中已经存在性能问题,我不想冒险添加。

无论小数位数如何,我只想使用 {@A} 中的实际值。 我猜这可能是由默认舍入设置作为默认小数位数引起的 现在我意识到这可能是由默认小数位数引起的,而不是四舍五入。

如果我将 A 更改为 (1/1000)*6,它将显示为 0,01 未格式化,B 将显示“0,00600000 test”。所以这是一个四舍五入的问题。

【问题讨论】:

    标签: crystal-reports decimal crystal-reports-xi


    【解决方案1】:
    • 将所需公式的输出保留为数字。
    • 右键单击公式并选择格式字段。
    • 在数字选项卡中选择自定义样式并单击自定义。
    • 对于舍入选项选择 0.0000000001
    • 单击小数选项旁边的 X-2 并输入此公式

    本地号码var a; 本地编号var b;

    for a := 1 to 10 do
    (
    if mid(strreverse(totext(CurrentFieldValue,10)),a,1) <> "0" then 
        (b := a;
        a := 10);
    );
    11- b
    

    【讨论】:

    • 我无法弄清楚为什么代码没有正确粘贴但本地 numbervar a;本地号码var b;应该是公式的前两行
    • 这与上面的条件格式示例非常相似。我希望有某种设置可以强制 Crystal Reports 使用公式字段中的实际值
    【解决方案2】:

    我发现默认舍入是由您的系统区域设置定义的。如果您将小数位数从 2(通常)增加到 8,那么您的所有问题都会得到解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      • 1970-01-01
      相关资源
      最近更新 更多