水晶报告"这里需要一个数字"

时间:2015-03-20 10:58:42

标签: crystal-reports

我在水晶报道中写了一些公式。我有一个字段可能包含一个数值,在这种情况下我正在对它进行一些计算,或者它可能包含一个字符串值,在这种情况下,它应该逐字返回。所以我认为这应该有效:如果Result.entry包含一个数字,那么将该数值放入Result中,否则只返回Result.entry:

    Local NumberVar Result := 0;
    if NumericText({RESULT.ENTRY}) // may be N.D. or B.L.D.
       then 
           ( Result:=val({RESULT.ENTRY});)
       else  (
            {RESULT.ENTRY} );
     );
    // something more going on here that at last returns some value

但是没有......"这里需要一个号码" CR说道并强调了其他地方的阻碍......任何有关Crazy的信息,对不起Crystal Reports在这里想要的以及为什么这是不可接受的?我甚至试图设置一个值,然后报告(按照Crystal report if then help, how to return a string or variable with formula),但我仍然得到同样的错误。

else ( 0 );

有效 - 但这绝对不是我想要的。 (此函数的其他返回值也是一个字符串)

2 个答案:

答案 0 :(得分:2)

你试图将部分分配为number而将其他部分分配为String,这将无效,你要么返回两个数字,要么同时返回两个字符串。

因此,您将数值保存为字符串,并在计算中使用时转换为数字

Local StringVar Result;
    if NumericText({RESULT.ENTRY}) // may be N.D. or B.L.D.
       then 
           Result:={RESULT.ENTRY};
       else  (
            {RESULT.ENTRY} );
     );

现在,在计算中使用时,您可以使用ToNumber(Result)

答案 1 :(得分:0)

这里最要注意的是,如果将某些内容声明为NumberVar,则要添加的字段必须是数字。如果要处理小数,请使用CurrencyVar,因为您无法将NumberVar设置为0,然后再将其添加到十进制值,这将导致获得期望的数字。