我对编程很新,目前正在教自己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)
答案 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
函数,您尝试将非数值转换为数字...因此出现此错误。
您有两种选择:
首先使用IsNumeric
测试该字段是否为数字,如果结果为true,则继续进行计算。像这样的东西
if IsNumeric({scsub.sub_desc}[1])
then //your code
不是将字段转换为数字值,而是将比较值转换为String,这将更容易使用,更容易出错。像这样徘徊。
if {scsub.sub_desc}[1] < ToText(6) then 'Under 6' & chr(146)