首页 > 解决方案 > Reportviewer VB.NET 关于开关表达式

问题描述

大家好,任何人都可以更正我在 rdlc 表中的代码

我有 1 个表,并且在该表上有一个字段!ans1 正在计算列的平均值(图像中的红色圆圈)然后我希望该平均值过滤到 if 语句以确定该平均值是否同意、不同意或强烈同意(图像中的黑色圆圈)

这是我的 RDLC 表的图片,黑色圆圈是 If 语句,它将确定红色圆圈中的平均值是否是同意、不同意或强烈同意,但我遇到了问题,因为该语句总是不同意甚至其值是 3

在此处输入图像描述

// Here is my Code in the Black Circle in the IMAGE
=Switch(Fields!ans1.Value < 1, "Strongly Disagree ",
Fields!ans1.Value > 2, " Disagree",
Fields!ans1.Value > 3, "Agree",
Fields!ans1.Value > 4, "Strongly Agree"
)

//Here is the Code in the RedCircle 
=Avg(CDbl(Fields!ans1.Value))

标签: vb.netasp.net-mvc-4rdlcreportviewer

解决方案


请记住,任何类型的 switch 语句都是自上而下评估的。3.00 是否大于 2?是的,所以结果是“不同意”(为什么你没有注意到并删除了那个流氓空间,我不知道)。如果要使用“大于”运算符进行比较,则需要先比较最大值:

=Switch(Fields!ans1.Value < 1, "Strongly Disagree",
Fields!ans1.Value > 4, "Strongly Agree",
Fields!ans1.Value > 3, "Agree",
Fields!ans1.Value > 2, "Disagree"
)

应该管用。这只是你应该在数学课上学到的基本逻辑。请注意,我也删除了该流氓空间。

顺便说一句,这仍然会忽略 1.0 - 2.0 范围内的任何值。


推荐阅读