有一个我正在尝试解决的问题,非常感谢您的帮助。我创建的 SSRS 2008 报告中有一个多值报告参数。当我从下拉列表中选择多个值时,报告运行良好。但是,当我只在下拉列表中选择一个值时,我得到一个“查询参数@XXXXXX 的值表达式包含和错误:索引超出了数组的范围。
我知道这一定是我忽略的东西,对 SSRS 报告和多值参数不熟悉,否则其他人会看到同样的事情。我浏览了这里的其他帖子,但找不到相同的问题。
这是我正在定义的 ReportParameter:
<ReportParameter Name="reader">
<DataType>String</DataType>
<DefaultValue>
<DataSetReference>
<DataSetName>dsReaders</DataSetName>
<ValueField>ReaderName</ValueField>
</DataSetReference>
</DefaultValue>
<Prompt>Readers</Prompt>
<ValidValues>
<DataSetReference>
<DataSetName>dsReaders</DataSetName>
<ValueField>ReaderName</ValueField>
<LabelField>ReaderName</LabelField>
</DataSetReference>
</ValidValues>
<MultiValue>true</MultiValue>
</ReportParameter>
这是使用它的 QueryParameter:
<QueryParameter Name="@ReaderName">
<Value>
=IIF(Parameters!reader.Count = 1, Parameters!reader.Value, ("'" + Replace(Replace(Join(Parameters!reader.Value, "~"), "'", "'''"), "~" ,"','") + "'"))
</Value>
<rd:UserDefined>true</rd:UserDefined>
</QueryParameter>
我可以提到的另一件事是,我使用的是 SSRS 2008 RTM,它总是给我这个查询参数中的 value 参数错误。升级到 SQL 2008 SP3 后,现在它在我定义的其他查询参数的 value 参数上有所不同。看起来很奇怪,但我知道它在告诉我一些事情。
这是 SSRS 2008 和/或 SQL 2008(非 R2)中的已知错误吗?或者我的报告定义中可能缺少的东西。