0

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

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

另一种更好的方法是添加一个仅包含名称和站点 ID 的新数据集,并找到某种方法来过滤掉名称的每个重复项,因此剩下的就是名称和关联的站点。不过,我不知道如何做到这一点。

4

1 回答 1

0

Finally found an explanation: 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

Essentially, this has you create one parameter to serve as a sorta jury-rigged dataset based on a piece of custom VB code. That first parameter is then used to populate a second, multi-valued parameter, which contains all unique values.

The VB code:

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: When you set up the dataset in this process, make sure to alter the query to reflect your own data source; don't just copy/paste blindly.

于 2013-07-18T20:10:45.463 回答