如何忽略Crystal Reports中的零小数位值

时间:2013-06-24 20:43:08

标签: crystal-reports crystal-reports-xi

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

123.24
98.234
1212.678432

而不是:

123.2400000000
98.2340000000
1212.6784320000

4 个答案:

答案 0 :(得分:9)

执行以下操作:

  • 右键单击要应用此格式的“详细信息”文本框 到
  • 点击“格式字段”
  • 点击“数字”标签
  • 点击“自定义...”
  • 设置适当的“小数”和“舍入”值,以反映输入此报告的表格的DECIMAL比例。
  • 单击“小数”公式按钮
  • 粘贴以下代码,并确保更改{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. 最后一行是一个公式,规定将显示多少小数位。因此,在删除所有多余的零之后,它会通过用修剪后的字符串的长度减去句点的位置来计算它。

答案 1 :(得分:4)

最简单的只需在格式文件中尝试下面的代码 - > Number-> Customize->小数代码部分:

if CurrentFieldValue=Int(CurrentFieldValue)  then
    0
else
    2

号码' 2'是你的小数位,你可以自己替换它。

答案 2 :(得分:0)

如果您没有对此字段进行任何计算并仅报告,是否可以将其作为字符串而不是数字提供给报告?

答案 3 :(得分:0)

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

•右键单击"详细信息"要将此格式应用于

的字段

•点击"格式字段"

•点击"数字"标签

•点击"自定义..."

从您要保留的最大小数位开始,然后向后复制该行。例如,如果你知道有一个值的最大小数位,你想要保持从那个数字开始,即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