0

有一个我正在尝试解决的问题,非常感谢您的帮助。我创建的 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)中的已知错误吗?或者我的报告定义中可能缺少的东西。

4

2 回答 2

0

在 IIF() 的真部分尝试 Value(0)。

于 2012-08-19T20:44:36.663 回答
0

我有完全相同的问题。我通过将所有参数值加入一个字符串来解决问题,然后检查该值是否存在,如下所示:

=iif(Array.IndexOf(Split(Join(Parameters!Detail.Value, ",").ToString(), ","), "0")>=0, "paramater with 0 value is checked", "parameter with 0 value is not checked")

如果array.indexof返回-1,则您的值不在列表中,否则返回所需值的位置。

于 2018-03-21T09:24:36.020 回答