如何比较同一列中包含的数字和字符串的值。

问题描述 投票:1回答: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 crystal-reports-xi crystal-reports-8.5
1个回答
1
投票

您的公式中存在多个问题

  1. 你不能直接将文字和数字进行比较
  2. 你不能写{数据库字段值}>=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.