SQL Server 2008 R2,使用BIDS设计报告。
我有一张桌子,我试图只显示某一行。也许有更好的方法可以做到这一点,但是我遇到了过滤器表达式的错误,无论我如何完成初始任务,我都想了解过滤。
我从过滤器表达式(设置为“Integer”类型)开始:
RowNumber(Nothing) = 1
这给出了错误:
Cannot compare data of types System.String and System.Int32.
我发现解决方案是将1更改为“= 1”,因为1被评估为字符串。
所以我接着:
RowNumber(Nothing) = =1
没有改变,我得到了同样的错误。
然后我尝试对表达式的第一部分这样做:
=RowNumber(Nothing) = =1
这将错误更改为部署问题(仍然构建,这令人沮丧):
Error pvInvalidDefinition : The definition of the report '/ReportName' is invalid.
然后我尝试在RowNumber上使用CInt: CInt(RowNumber(Nothing)= = 1
然后我可以部署它,但错误只会改回第一个:
Cannot compare data of types System.String and System.Int32.
似乎无论我在这里尝试什么,我要么无法部署报告,要么我得到一个错误,我正在将字符串与int进行比较。
RowNumber返回一个整数,所以看起来这应该有效。我尝试使用数据集的名称代替“Nothing”,但这并没有改变我所看到的内容。
我意识到有很多方法可以解决我的初始问题,但我很好奇为什么过滤器表达式无效。
答案 0 :(得分:1)
最好隐藏具有visibilty属性的行。只需单击任何文本框,然后转到visibily选项卡。您现在可以单击show或hode并转到表达式。
默认为隐藏。所以在那里写一个表达式来隐藏行。 = IIf(NOT(RowNumber = 1),TRUE,FALSE)
如果您收到任何错误,请告诉我
答案 1 :(得分:1)
RowNumber无法在Tablix过滤器中使用。
使用RowNumber(Nothing) <> 1
作为行可见性属性修复了问题。
使用BIDS时,您不会收到任何指示问题的错误,但是将报告导入Report Builder并从那里部署报告会产生更具描述性的错误,最终帮助我解决了问题。< / p>