如何通过VB中的ParameterValue将MDX参数列表发送到SSRS?

时间:2013-10-16 21:16:33

标签: vb.net reporting-services mdx

如何通过VB中的ParameterValue将MDX参数列表发送到SSRS? 我不确定这是否是正确的问题,但这里有症状:当我向SSRS发送一个商店ID时,我会收到有效数据。但是,只要我将一系列商店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(执行)

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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

方法1:按特定索引添加值。

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

P.S。像往常一样,我花了好几个小时把头撞在桌子上来解决这个问题。我希望它有所帮助。