Crystal reports 如何在Crystal报表中忽略零位小数

Crystal reports 如何在Crystal报表中忽略零位小数,crystal-reports,crystal-reports-xi,Crystal Reports,Crystal Reports Xi,我在做报告,我需要精确的小数点。一个数字的值可以是2位小数,一个数字的值可以是10。如果我将小数范围设置为10位,则该列将始终显示10位小数,其中大部分为0。如果存在值中的0,我如何忽略它们?例如,我喜欢这样显示数据: 123.24 98.234 1212.678432 而不是: 123.2400000000 98.2340000000 1212.6784320000 请执行以下操作: 右键单击要应用此格式的“详细信息”文本框 到 单击“格式字段” 单击“数字”选项卡 单击“自定义…” 设

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

123.24
98.234
1212.678432
而不是:

123.2400000000
98.2340000000
1212.6784320000
请执行以下操作:

  • 右键单击要应用此格式的“详细信息”文本框 到
  • 单击“格式字段”
  • 单击“数字”选项卡
  • 单击“自定义…”
  • 设置适当的“小数”和“四舍五入”值,以反映此报表中表格的小数比例
  • 单击“小数”公式按钮
  • 粘贴以下代码,并确保更改{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, ".");
    
重要

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

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

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

    if CurrentFieldValue=Int(CurrentFieldValue)  then
        0
    else
        2
    

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

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

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

    •点击“格式字段”

    •单击“编号”选项卡

    •单击“自定义…”

    从要保留的最大小数点开始,然后向后复制该行。例如,如果您知道最大小数点位置有一个您希望以该数字开头的值,即1.234560,您将以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
    

    没有计算。它直接从我的oracle数据库中提取。我没有创建提取数据的过程,但我知道它根本不会处理数字。在CR级别也没有进行计算。谢谢。我将在一个小时内尝试这个,然后返回结果。嘿,我尝试了这个,它说代码中有一个错误。它声明“字段名未知”,并突出显示了这一部分:{myproc;1.col1}有什么想法吗?在公式编辑器中,您应该能够展开“报告字段”树,只需将字段拖到公式中。是的,我记得当我必须弄清楚它时,这是多么令人沮丧。。。最好的解决办法是不要使用Crystal:)嗨,我对Crystal report很陌生。但“len(number)-InStr(number)”;这一行的意思是什么?我可以理解“Len”函数将返回“number”变量的长度,“InStr”函数将返回“.”的位置,但您在哪里分配它的值。你能给我解释一下吗?请看我对[公式CR][1][1中的小数点四舍五入]的回答:我不想做任何四舍五入。我只想显示准确的数字,并省略任何额外的0。请您详细说明您的答案,添加有关您提供的解决方案的更多描述。谢谢。这解决了我的两个问题。首先,这是我需要的。其次,我在寻找“CurrentFieldValue”。