2

SQL Server 2008 R2,使用 BIDS 设计报表。

我有一张桌子,我试图只显示某一行。也许有更好的方法可以做到这一点,但是我遇到了过滤器表达式的错误,无论我如何完成我的初始任务,我都想了解过滤。

我从过滤器表达式开始(设置为“整数”):

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”,但这并没有改变我所看到的。

我意识到有很多方法可以解决我最初的问题,但我很好奇为什么过滤器表达式无效。

4

2 回答 2

1

最好隐藏具有可见性属性的行。只需单击任何文本框并转到可见选项卡。您现在可以单击 show 或 hode 并转到表达式。

默认为 Hide 。所以在那里写一个表达式来隐藏该行。=IIf(NOT(RowNumber = 1),TRUE,FALSE)

如果您有任何错误,请告诉我

于 2013-03-26T20:07:42.857 回答
1

RowNumber 不可在 Tablix 筛选器中使用。

使用RowNumber(Nothing) <> 1作为 Row 可见性属性解决了这个问题。

使用 BIDS,您不会收到任何指示问题所在的错误,但是将报告导入到 Report Builder 并从那里部署它会给出一个更具描述性的错误,最终帮助我解决了我的问题。

于 2013-03-26T20:26:50.683 回答