【问题标题】:How can I get both values from a multi-dimensional array in a multi-select ssrs report parameter?如何从多选 ssrs 报告参数中的多维数组中获取两个值?
【发布时间】:2018-05-15 22:24:34
【问题描述】:

我在 SSRS 数据集中有以下 SQL 查询:

SELECT c.Id
, c.LastName + ', ' + c.FirstName AS CustomerName
, r.PurchaseDate
FROM     tblCustomer c
JOIN Receipt r ON r.CustomerId = c.Id
WHERE  StoreId = @storeId

我还为报告设置了三个参数:开始日期、结束日期和客户。工作流程是:选择开始日期,选择结束日期,然后过滤上述数据集以仅在多选下拉参数中显示收货日期在开始日期和结束日期之间的客户名称。问题是,当客户在日期范围内有多个收据时,客户在下拉参数中出现了不止一次。我复制了过滤掉重复项的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

效果很好,只是它只在下拉列表中显示客户 ID。

如何让多选下拉菜单将 CustomerName 作为标签,将 Customer Id 作为值?

【问题讨论】:

  • 不是 VB.NET 而不是 VBA 吗?
  • 这不是 VBA。我很想编辑,但因为你有金牌而推迟了。它是 VB.NET。请修改,以便我们可以从 VBA 队列中删除。
  • 简短回复:stackoverflow.com/questions/27943204/… 较长回复:代码来自一个说它是用于应用程序的 VB 的来源。我相信他们的话,但我会假设你知道你在说什么。

标签: reporting-services ssrs-2008


【解决方案1】:

您可以通过级联参数来解决这个问题。

我没有看到 start_date 和 end_date 参数在哪里使用..

您可以创建另一个数据集,我们称之为客户。

您的客户日期集查询将是:

SELECT DISTINCT
 c.Id
, c.LastName + ', ' + c.FirstName AS CustomerName

FROM     tblCustomer c
JOIN Receipt r ON r.CustomerId = c.Id
WHERE  StoreId = @storeId

--  and Receipt.somedate between @start_date and @end_date

将您的客户参数设置为从此查询中获取数据。您只会有来自上述选择的客户..

转到客户参数..可用值->客户数据集 在那里设置值 - 值字段将是 ID,标签字段将是名称

当然,您的主数据集需要有@customerID 过滤器以及@start_date 和@end_date

【讨论】:

  • 如此简单。我太专注于使用过滤器,以至于忘记了 SQL 方法。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多