Crystal reports Crystal reports是数字vs toNumber

Crystal reports Crystal reports是数字vs toNumber,crystal-reports,crystal-reports-xi,Crystal Reports,Crystal Reports Xi,我处理的字段可能是数值,也可能不是数值。如果它不是数值的,我将按原样打印它,如果它是数值的,我将对它进行一些计算,所以我尝试: Local StringVar TxtUnct := {RESULT.ATTRIBUTE_1}; Local NumberVar Result := 0; if not(isNumeric(TxtUnct)) Then( TxtUnct ); Local NumberVar unct :=ToNumber(TxtUnct); 但我最终得到了一个非数字字符串。最

我处理的字段可能是数值,也可能不是数值。如果它不是数值的,我将按原样打印它,如果它是数值的,我将对它进行一些计算,所以我尝试:

Local StringVar TxtUnct := {RESULT.ATTRIBUTE_1};
Local NumberVar Result := 0;
if not(isNumeric(TxtUnct)) Then(
    TxtUnct
);
Local NumberVar unct :=ToNumber(TxtUnct);

但我最终得到了一个非数字字符串。最后一行。很明显,isNumeric看起来是数字,而不是ToNumber。Crystal Reports中有更严格的检查吗?

您的陈述是错误的。。。您首先分配,但如果字符串是数字,则根据您的要求分配。所以像这样改变

Local StringVar TxtUnct;
Local NumberVar Result := 0;
if not(isNumeric(TxtUnct)) 
Then
(
    TxtUnct :={RESULT.ATTRIBUTE_1};
);
Local NumberVar unct :=ToNumber(TxtUnct)

我认为你把所有这些局部变量都复杂化了。您可以通过一个简单的if-then-else语句来完成它

local numbervar workingNumber;

if not(isNumeric({RESULT.ATTRIBUTE_1}) then {RESULT.ATTRIBUTE_1}
 else
  (
   workingNumber:=toNumber({RESULT.ATTRIBUTE_1};
   //do your numeric calculations on workingNumber here
   toText(workingNumber)
  )

公式只能有一种数据类型。。。在一种情况下它不能是字符串,在另一种情况下它不能是数字。这只是它的一部分,我最终在所有情况下都返回一个字符串。