2015-06-09 56 views
0

我有几个Parameters,我想基于掀起结果的用户选择,但是当我从我的多值Parameter我的报告的错误选择与Failed to evaluate the FilterValues of the DataSet 'DST_MyThirdDataSet'SSRS多值参数不过滤

我有我的第一个DataSet调用DST_MyFirstDataSet这是用来创建名为Parameter名为Parameter1

我的第二个DataSet被称为DST_MySecondDataSet是根据Parameter1中选择的内容进行过滤的。我的过滤器看起来是这样的:

Expression [DataSet1Id] Integer = CInt(Parameters!Parameter1.Value) 

这是我用我叫Parameter2Parameter这是一个多值参数。这似乎工作正常。

我的第三个DataSet被称为DST_MyThirdDataSet,我已经建立了基于Parameter2中选择的内容进行过滤。我的过滤器看起来是这样的:

Expression [DataSet2Id] Integer In CInt(Parameters!Parameter2.Value) 

无论我在网上看了看,似乎支持我所(使用In操作和使用Parameters!Parameter2.Value),但我仍然似乎得到这个愚蠢的错误。

有没有人看到我在哪里可能会出错?

编辑

看来工作的,如果不是转换的ParameterInteger,我转换FieldString,但为什么不能我做的是我本来的方式吗?

回答

2

它不起作用,因为Parameters!Parameter2.Value实际上是一个数组,因为它是一个多选参数。所以你试图将一个数组转换为一个整数,这是行不通的。

你甚至可以通过做Parameters!Parameter2.Value(1)或项目的数组中的号码来使用单独的数组元素Parameters!Parameter2.Countmore info

我会建议你参数的数据类型设置为整数,如果他们应该是一个整数。这样可以避免必须进行任何可能失败的转换。 parameter data type configuration

+0

谢谢!你的回答确实解决了我的问题。但是,我只想澄清一点,'Parameters!Parameter2.Value'确实可行。即使你说它是一个数组是正确的,那也没问题,因为我使用的是“IN”运算符,它允许在一个“数组”数组中进行查找。最终解决我的问题是将参数数据类型设置为整数。再次感谢! – scapegoat17

+0

您正在'Cint(Parameter ...)中使用in运算符'cint函数不返回数组,并且不能在数组中的每个值上工作。所以它没有做你认为的事情。 –