使用CASE或IF / ELSE IF / ELSE的晶体报告公式

问题描述 投票:0回答:1

我有一个要在Crystal Reports公式中使用的数据库字段。数据库中的该记录存储数字和文本值。

样本值:75、85、55,无,待处理

我正在尝试在Crystal Report公式中使用此值,并且该报告应基于此字段显示特定的值。

示例:

{Database Field Value}>=85 THEN "Exceeds Expectations"
{Database Field Value}>=50 AND <=84 THEN "Met Expectations"
{Database Field Value}<49 THEN "Needs Improvement"
{Database Field Value}="none" THEN "Survey Not Taken"
{Database Field Value}="Pending" THEN "Survey Not Completed"

我正在尝试使用此公式,但其未正确显示在报告中。

IF {Database Field Value} >= TOTEXT(85) THEN "Exceeds Expectations"
ELSE IF {Database Field Value} >= TOTEXT(50) AND {Database Field Value} <= TOTEXT(84) THEN "Met Expectations"
ELSE IF {Database Field Value} < TOTEXT(49) THEN "Needs Improvement"
ELSE IF {Database Field Value}="None" THEN "Survey Not Taken"
ELSE IF {Database Field Value}="Pending" THEN "Survey Not Completed"
ELSE ""

有人可以帮忙吗?

crystal-reports crystal-reports-2008 crystal-reports-2010
1个回答
0
投票

您的公式中有多个问题

  1. 您不能直接将文本与数字进行比较
  2. 您无法编写{Database Field Value}> = 50 AND <= 84,您始终必须指定要比较的值:{Database Field Value}>=50 AND {Database Field Value} <=84
  3. 如果文本用ToText()转换,它仍然是文本,不会被视为数字

因此您必须首先使用NumericText功能检查该字段是否包含数字。如果包含数字,则将其转换为ToNumber,然后将其与相应的数字进行比较。

以下公式应会给您所需的结果:

If NumericText({Database Field Value}) Then
    If ToNumber({Database Field Value})>=85 Then
        "Exceeds Expectations"
    Else If ToNumber({Database Field Value})>=50 And ToNumber({Database Field Value})<=84 Then
        "Met Expectations"
    Else If ToNumber({Database Field Value})<49 Then
        "Needs Improvement"
Else If {Database Field Value}="none" Then
    "Survey Not Taken"
Else If{Database Field Value}="Pending" Then
    "Survey Not Completed"

P.S .:数字49将不满足任何条件...也许是故意的。

© www.soinside.com 2019 - 2024. All rights reserved.