公式中没有错误,但是当我到达某个页面时,我得到一个"字符串是非数字的"错误,我无法再预览报告

时间:2014-06-24 20:54:18

标签: crystal-reports

我对编程很新,目前正在教自己Crystal Reports ......

我有一个没有错误的公式,但是当我到达报告中的某个页面时,它会给我一条消息说"这个字符串是非数字的"。

这是公式,非常感谢任何帮助!

select {@Upright/Grand}
case "Grand" : if tonumber({scsub.sub_desc}[1]) < 6 then 'Under 6' & chr(146)
else
if tonumber({scsub.sub_desc}[1]) = 6 then '6' & chr(146) & chr(150) & '7' & chr(146)
else
if tonumber({scsub.sub_desc}[1]) > 6 then '7' & chr(146) & chr(43) 
default : if tonumber({sccat.cat_desc} [1]) <= 42 then '44' & chr(34) & ' and Under' 
else
if tonumber({sccat.cat_desc} [1])  in 45 _to_ 48 then '45' & chr(34) & chr(150) & '48' & chr(34)
else
if tonumber({sccat.cat_desc} [1])  in 49 to 52 then '49' & chr(34) & chr(150) & '52' & chr(34)

2 个答案:

答案 0 :(得分:0)

您应首先添加“其他”&#39;所有你的&#39; if&#39;案件未经核实。然后你应该确保{sccat.cat_desc} [1]只返回可以转换为数字的字符串值:no nulls,no empty strings,no spaces,no characters,no nothing:just plain numbers。

答案 1 :(得分:0)

问题在于tonumber函数,您尝试将非数值转换为数字...因此出现此错误。

您有两种选择:

  1. 首先使用IsNumeric测试该字段是否为数字,如果结果为true,则继续进行计算。像这样的东西

     if IsNumeric({scsub.sub_desc}[1]) 
     then //your code
    
  2. 不是将字段转换为数字值,而是将比较值转换为String,这将更容易使用,更容易出错。像这样徘徊。

     if {scsub.sub_desc}[1] < ToText(6) then 'Under 6' & chr(146)