【问题标题】:How to ignore zero decimal place values in Crystal Reports如何在 Crystal Reports 中忽略零小数位值
【发布时间】:2013-06-24 20:43:07
【问题描述】:

我正在制作报告,我需要精确的十进制值。一个数字可以有 2 位小数,一个数字可以有 10 位。如果我将小数范围设置为 10 位,则该列将始终显示 10 位小数,大部分为 0。如果它们存在,我如何忽略值中的 0?例如,我喜欢这样显示的数据:

123.24
98.234
1212.678432

代替:

123.2400000000
98.2340000000
1212.6784320000

【问题讨论】:

标签: crystal-reports crystal-reports-xi


【解决方案1】:

执行以下操作:

  • 右键单击要应用此格式的“详细信息”文本框 到
  • 点击“格式化字段”
  • 点击“数字”标签
  • 点击“自定义...”
  • 设置适当的“小数”和“舍入”值以反映输入此报告的表格的小数位数
  • 点击“小数”公式按钮
  • 粘贴以下代码,并确保更改 {myproc;1.col1} 以反映您的过程/列:

    stringVar number := ToText({myproc;1.col1}, 8); 
    while (right(number, 1) = "0") do 
    number := left(number, len(number) - 1);
    len(number) - InStr(number, ".");
    

重要

  1. 用您正在使用的实际变量更改“{myproc;1.col1}”。
  2. 最后一行是一个公式,指示要显示多少小数位。因此,在删除所有多余的零之后,它通过将句点的位置减去修剪字符串的长度来计算它。

【讨论】:

  • 谢谢。我会在一个小时内尝试这个并返回我的结果。
  • 嘿,我试过了,它说代码中有错误。它声明“字段名称未知”并突出显示这部分:{myproc;1.col1} 有什么想法吗?
  • 在公式编辑器中,您应该能够展开报告字段树并将字段拖到公式中。
  • 是的,我记得当我不得不弄清楚时,这是多么令人沮丧......最好的解决方案是不使用 Crystal :)
  • 嗨,我对水晶报表很陌生。但是什么 "len(number) - InStr(number, ".");"线是这里的意思吗?我可以理解“Len”函数将返回“number”变量的长度,“InStr”函数将返回“.”的位置。但是你在哪里分配它的价值。你能解释一下吗?
【解决方案2】:

最简单的方法是在格式字段->数字->自定义->小数代码部分尝试下面的代码:

if CurrentFieldValue=Int(CurrentFieldValue)  then
    0
else
    2

数字“2”是你的小数位,你可以自己替换。

【讨论】:

  • 谢谢。这解决了我的两个问题。首先,这是我需要的。其次,我在寻找“CurrentFieldValue”。
【解决方案3】:

如果您没有对该字段进行任何计算而只是报告它,您能否将其作为字符串而不是数字输入到您的报告中?

【讨论】:

  • 无计算。它是直接从我的 oracle 数据库中提取的。我没有创建提取数据的过程,但我知道它根本不会操纵数字。在 CR 级别也不进行任何计算。
【解决方案4】:

这将允许您将字段保留为数字,而不必转换为文本。此解决方案是在小数点处进行格式更改。

•右键单击要应用此格式的“详细信息”字段

•单击“格式化字段”

•单击“数字”标签

•单击“自定义...”

从您要保留的最大小数位开始,然后向后复制该行。例如,如果您知道要保留的最大小数位数以该数字开头,即 1.2345600,您将从 5 开始。如果数字为 0,您必须首先考虑这一点,否则您将收到错误

“字段名称”是您要更改格式的数据库字段名称。

If {"Field Name"} = 0 then 2 else 
if((({"Field Name"})/(truncate({"Field Name},4)))>1) then 5 else
if((({"Field Name"})/(truncate({"Field Name},3)))>1) then 4 else
if((({"Field Name"})/(truncate({"Field Name},2)))>1) then 3 else
2

【讨论】:

  • 能否请您详细说明您的答案,添加更多关于您提供的解决方案的描述?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-16
  • 1970-01-01
  • 1970-01-01
  • 2020-05-19
  • 2023-03-31
  • 1970-01-01
相关资源
最近更新 更多