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

问题描述 投票:6回答:4

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

123.24
98.234
1212.678432

代替:

123.2400000000
98.2340000000
1212.6784320000
crystal-reports crystal-reports-xi
4个回答
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. 最后一行是一个公式,规定将显示多少小数位。因此,在移除所有多余的零之后,它通过用修剪的字符串的长度减去周期的位置来计算它。

4
投票

最简单的只需在格式字段 - >数字 - >自定义 - >小数代码部分中尝试以下代码:

if CurrentFieldValue=Int(CurrentFieldValue)  then
    0
else
    2

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


0
投票

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


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
© www.soinside.com 2019 - 2024. All rights reserved.