我正在基于SharePoint列表在BIDS中构建报表。我想创建一个多值参数来按名称过滤列表,但每个名称在列表中多次显示。该报告已经被工作站点过滤,我还需要此过滤器。我对SSRS很新,所以可能有一个更简单的解决方案,但我想到了两种方法可以做到,尽管两者都没有特别高效。
一种方法是为每个站点创建单独的MVP,并在参数的可用值中手动写出该站点的每个名称。问题是我认为没有办法根据你正在查看的网站隐藏参数;例如,如果我正在查看站点A,那么站点B-Z的下拉列表也会显示出来。他们不会做任何事情,因为多余的网站已经被过滤掉了,但它会成为一个眼睛。从长远来看,这种方法也难以维护,需要有人进入并手动将每个新名称添加到参数中。
另一个更好的方法是添加一个只包含名称和站点ID的新数据集,并找到一些方法来过滤掉名称的每个重复,所以剩下的就是名称和相关网站。我不知道如何做到这一点。
答案 0 :(得分:0)
基本上,您可以创建一个参数作为基于一个自定义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:在此过程中设置数据集时,请确保更改查询以反映您自己的数据源;不要盲目地复制/粘贴。