rdlc 背景颜色错误 - 大表达式似乎会导致错误
rdlc background color bug - large expression seems to cause a bug
我正在 ASP.Net MS visual 2010 中设计一个相当大的 rdlc 报告。报告中的某些行需要突出显示,如果有什么地方不合适的话。因此,在单击 table 行后,我转到了我的 rdlc 报告的属性框中的背景颜色选项卡。我试图让以下表达式在属性框中的背景颜色选项卡中工作。
`=IiF((Fields!C.Value < .75 And Fields!C.Value <> "")
Or (Fields!S.Value < .75 And Fields!S.Value <> "")
Or (Fields!O.Value > 5), "Yellow", "White")`
最初我想要背景颜色为黄色或白色,但出于测试目的,我将白色更改为绿色,因为白色似乎是默认颜色。
`=IiF((Fields!C.Value < .75 And Fields!C.Value <> "")
Or (Fields!S.Value < .75 And Fields!S.Value <> "")
Or (Fields!O.Value > 5), "Yellow", "Green")`
这导致一些行是绿色的,但是 none 是黄色的,应该是黄色的行反而是白色的。
当我把它缩短到
时它工作正常
`=IiF((Fields!C.Value < .75 ), "Yellow", "Green")`
我得到了所有绿色和黄色行。
我试过后效果很好
`=IiF((Fields!C.Value < .75 And Fields!C.Value <> ""), "Yellow", "Green")
这也很好用,我得到的所有行都是绿色或黄色。
但是只要我添加一个或者它们就会停止工作。
`=IiF((Fields!C.Value < .75 And Fields!C.Value <> "")
Or Fields!O.Value > 5 , "Yellow", "Green")`
这会导致一些绿色行但没有黄色行,应该是黄色行都变成白色?
在某些情况下,我没有得到绿色或黄色行。我厌倦了对原始声明的理解,
`IiF((Fields!Cpk_C.Value >= .75 Or Fields!Cpk_C.Value = "")
And (Fields!Cpk_S.Value >= .75 Or Fields!Cpk_S.Value = "")
And (Fields!Cpk_S.Value <= 5), "Green", "Yellow")`
但是没有任何效果,因为它全是白行。
对于我做错了什么或为什么这不起作用的任何帮助,我们将不胜感激,谢谢。
如上面的评论所示,问题已解决(感谢 Ic 的提示)。该问题与项目 C.Value 和 S.Value 的值类型有关。它们是基于十进制的,而不是字符串,因此与 <> "" 的比较会导致格式警告,该警告不会在这些行上执行代码,从而导致不应用任何颜色。由于它们本质上是浮点数,因此 IsNumeric 函数更合适。
=IiF((Fields!Cpk_C.Value > .75 And IsNumeric(Fields!Cpk_C.Value)) 或 (Fields!Cpk_S.Value > .75 And IsNumeric(Fields !Cpk_S.Value)) 或字段!OOC.Value > 5, "Yellow", "White")
我正在 ASP.Net MS visual 2010 中设计一个相当大的 rdlc 报告。报告中的某些行需要突出显示,如果有什么地方不合适的话。因此,在单击 table 行后,我转到了我的 rdlc 报告的属性框中的背景颜色选项卡。我试图让以下表达式在属性框中的背景颜色选项卡中工作。
`=IiF((Fields!C.Value < .75 And Fields!C.Value <> "")
Or (Fields!S.Value < .75 And Fields!S.Value <> "")
Or (Fields!O.Value > 5), "Yellow", "White")`
最初我想要背景颜色为黄色或白色,但出于测试目的,我将白色更改为绿色,因为白色似乎是默认颜色。
`=IiF((Fields!C.Value < .75 And Fields!C.Value <> "")
Or (Fields!S.Value < .75 And Fields!S.Value <> "")
Or (Fields!O.Value > 5), "Yellow", "Green")`
这导致一些行是绿色的,但是 none 是黄色的,应该是黄色的行反而是白色的。
当我把它缩短到
时它工作正常`=IiF((Fields!C.Value < .75 ), "Yellow", "Green")`
我得到了所有绿色和黄色行。
我试过后效果很好
`=IiF((Fields!C.Value < .75 And Fields!C.Value <> ""), "Yellow", "Green")
这也很好用,我得到的所有行都是绿色或黄色。
但是只要我添加一个或者它们就会停止工作。
`=IiF((Fields!C.Value < .75 And Fields!C.Value <> "")
Or Fields!O.Value > 5 , "Yellow", "Green")`
这会导致一些绿色行但没有黄色行,应该是黄色行都变成白色?
在某些情况下,我没有得到绿色或黄色行。我厌倦了对原始声明的理解,
`IiF((Fields!Cpk_C.Value >= .75 Or Fields!Cpk_C.Value = "")
And (Fields!Cpk_S.Value >= .75 Or Fields!Cpk_S.Value = "")
And (Fields!Cpk_S.Value <= 5), "Green", "Yellow")`
但是没有任何效果,因为它全是白行。
对于我做错了什么或为什么这不起作用的任何帮助,我们将不胜感激,谢谢。
如上面的评论所示,问题已解决(感谢 Ic 的提示)。该问题与项目 C.Value 和 S.Value 的值类型有关。它们是基于十进制的,而不是字符串,因此与 <> "" 的比较会导致格式警告,该警告不会在这些行上执行代码,从而导致不应用任何颜色。由于它们本质上是浮点数,因此 IsNumeric 函数更合适。
=IiF((Fields!Cpk_C.Value > .75 And IsNumeric(Fields!Cpk_C.Value)) 或 (Fields!Cpk_S.Value > .75 And IsNumeric(Fields !Cpk_S.Value)) 或字段!OOC.Value > 5, "Yellow", "White")