在Crystal Reports中重新创建嵌套的if语句

时间:2016-11-28 20:58:27

标签: c# crystal-reports

我正在尝试重新创建一个嵌套的if语句,该语句是我在Crystal报表公式中创建的。我试图自己创建公式并认为我已经弄明白了,直到我查看原始数据并看到Crystal和Excel之间的计算已经关闭,尽管原始数据完全相同。我已经检查了这里和其他网站的电路板,找不到像我这样的初学者可以遵循的解决方案。我想要做的是根据具体问题调整公式的评分计算。我的两个问题必须与数据中的其他问题进行不同的评分。

以下是我在Excel中的内容:

=IF(T4="How many calls have you taken on this product since your     
 trainin",6,IF(T4="Did you experience any problems that your training did 
 not prepa",IF(U4=1,0,6),(7-U4)))

以下是我在Crystal中提出的建议:

if {Command.Question_PK} = "55D0D569-7653-4553-B9C5-F858C5D318F9" Then 6
Else if {Command.Question_PK} = "15948F36-E536-4C11-834A-BB5035754024" 
then if {Command.answer} = 1 Then 0 Else 6
Else 7 - {Command.answer}

查看数据集,看起来Crystal没有执行第一个if语句,主要是将该特定问题的评分自动调整为6,无论答案者给出的答案是什么。

如果数据完全相同,我如何才能使计算与Excel中的计算相匹配?

1 个答案:

答案 0 :(得分:0)

我不知道你是如何实现你的输入的。所以我只是在Excel中编写与C#完全相同的算法。如果您在Visual Studio中创建控制台应用程序并运行它,您可以看到它是如何工作的。

using System;

class Program
{
static void Main(string[] args)
{
    int result = 0;
    int U4;
    string T4;
    string statement1 = "How many calls have you taken on this product since your trainin?";
    string statement2 = "Did you experience any problems that your training did not prepa";

    Console.WriteLine("Please type value of T4");
    T4 = Console.ReadLine();
    Console.WriteLine("Please type value of U4");
    U4 = int.Parse(Console.ReadLine());

    if (T4 == statement1)
    {
        result = 6;
    }
    else
    {
        if(T4 == statement2)
        {
            if (U4 == 1)
            {
                result = 0;
            }
            else
            {
                result = 6;
            }
        }
        else
        {
            result = 7 - U4;
        }
    }
    Console.WriteLine("result is : "+result);
    Console.ReadLine();
}
}