SharePoint列表中多个名称的外观,但BIDS报告只需要一个名称

时间:2013-07-16 16:46:01

标签: reporting-services ssrs-2008 bids

我正在基于SharePoint列表在BIDS中构建报表。我想创建一个多值参数来按名称过滤列表,但每个名称在列表中多次显示。该报告已经被工作站点过滤,我还需要此过滤器。我对SSRS很新,所以可能有一个更简单的解决方案,但我想到了两种方法可以做到,尽管两者都没有特别高效。

一种方法是为每个站点创建单独的MVP,并在参数的可用值中手动写出该站点的每个名称。问题是我认为没有办法根据你正在查看的网站隐藏参数;例如,如果我正在查看站点A,那么站点B-Z的下拉列表也会显示出来。他们不会做任何事情,因为多余的网站已经被过滤掉了,但它会成为一个眼睛。从长远来看,这种方法也难以维护,需要有人进入并手动将每个新名称添加到参数中。

另一个更好的方法是添加一个只包含名称和站点ID的新数据集,并找到一些方法来过滤掉名称的每个重复,所以剩下的就是名称和相关网站。我不知道如何做到这一点。

1 个答案:

答案 0 :(得分:0)

终于找到了解释:http://blogs.msdn.com/b/sqlforum/archive/2011/04/28/walkthrough-how-to-get-distinct-values-of-a-column-of-a-sharepoint-list-using-sql-server-reporting-services.aspx

基本上,您可以创建一个参数作为基于一个自定义VB代码的sorta陪审团操纵数据集。然后,第一个参数用于填充第二个多值参数,该参数包含所有唯一值。

VB代码:

Public Shared Function RemoveDuplicates(parameter As Parameter) As String()

        Dim items As Object() = parameter.Value

        System.Array.Sort(items)

        Dim k As Integer = 0

        For i As Integer = 0 To items.Length - 1

                    If i > 0 AndAlso items(i).Equals(items(i - 1)) Then

                                Continue For

                    End If

                    items(k) = items(i)
                    k += 1

        Next

        Dim unique As [String]() = New [String](k - 1) {}

        System.Array.Copy(items, 0, unique, 0, k)

        Return unique

End Function

NB:在此过程中设置数据集时,请确保更改查询以反映您自己的数据源;不要盲目地复制/粘贴。