0

如何通过 VB 中的 ParameterValue 将 MDX 参数列表发送到 SSRS?我不确定这是否是正确的问题,但症状如下:当我将一个商店 ID 发送到 SSRS 时,我会返回有效数据。但是,只要我将一系列商店 ID 串在一起,它就会返回 - (破折号)应该是数值的位置。所以这会返回有效的销售数字:

Private parametersRdl(1) As ParameterValue

        parametersRdl(0) = New ParameterValue()
        parametersRdl(0).Name = "StoreLocations"
        parametersRdl(0).Value = "[Stores].[Store Location].[Stores].&[456789]”

        parametersRdl(1) = New ParameterValue()
        parametersRdl(1).Name = "EndDate"
        parametersRdl(1).Value = "[Current Date].[YearMonthDate].[Month].&[2012-12-01T00:00:00]"

这将返回破折号而不是销售数字:

Private parametersRdl(1) As ParameterValue

        parametersRdl(0) = New ParameterValue()
        parametersRdl(0).Name = "StoreLocations"
        parametersRdl(0).Value = "[Stores].[Store Location].[Stores].&[456789], "[Stores].[Store Location].[Stores].&[123456]”

        parametersRdl(1) = New ParameterValue()
        parametersRdl(1).Name = "EndDate"
        parametersRdl(1).Value = "[Current Date].[YearMonthDate].[Month].&[2012-12-01T00:00:00]"

我尝试过各种参数分隔符,例如 &、逗号、'\、' 等。ParameterValue 是否接受列表?我是否多次设置或附加参数Rdl(0).Value?当然,当我在 BIDS 中设置默认设置时,效果很好。当我通过网络发送列表时,日志显示它会在它们后面附加 \,(斜杠逗号),但这似乎不起作用。

Visual Studio 2010、VB.net、SSRS 2010(管理)、SSRS 2005(执行)

感谢你的帮助!

4

1 回答 1

0

好的,这就是答案。只要按名称引用参数,就可以为同一个参数添加多个值。有几种方法可以做到这一点。第一种方法允许您定义列表对象的确切数量,但是第二种方法使添加一堆值变得更加容易。无论如何,每种方法都允许您将 MDX 值列表添加到相同的 SSRS 参数。

方法一:按特定索引加值。

Private parametersRdl(7) As ParameterValue
‘ Add your other parameters 
        parametersRdl(5) = New ParameterValue()
        parametersRdl(5).Name = "StoresStoreLocation"
        parametersRdl(5).Value = "[Stores].[Store Location].[Stores].&[123]"

        parametersRdl(6) = New ParameterValue()
        parametersRdl(6).Name = "StoresStoreLocation"
        parametersRdl(6).Value = "[Stores].[Store Location].[Stores].&[456]"

方法2:将字符串值拆分为列表并循环遍历。

Private parametersRdl(50) As ParameterValue


        Dim StoresString As String = "123, 456, 789, 741, 852, 963"
        Dim StoresList() As String = StoresString.Split(",")

        For n As Integer = 0 To StoresList.Count - 1
            parametersRdl(n) = New ParameterValue()
            parametersRdl(n).Name = "StoresStoreLocation"
            parametersRdl(n).Value = "[Stores].[Store Location].[Stores].&[" + StoresList(n) + "]"
        Next

PS 像往常一样,我花了好几个小时把头撞在桌子上才弄明白。我希望它有所帮助。

于 2013-10-17T00:28:35.603 回答