我在水晶报道中写了一些公式。我有一个字段可能包含一个数值,在这种情况下我正在对它进行一些计算,或者它可能包含一个字符串值,在这种情况下,它应该逐字返回。所以我认为这应该有效:如果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 );
有效 - 但这绝对不是我想要的。 (此函数的其他返回值也是一个字符串)
答案 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,然后再将其添加到十进制值,这将导致获得期望的数字。