2016-02-25 104 views
0

我们有一个包含4个多值参数的报表。每个值都是20个字符,有些参数有30多个选择。如果用户应该选择All,那么将参数& dept = 10 & dept = 20等参数传递将不起作用,因为它将超过URL的2048的限制。是否有另一种方式来传递它们?以下是URL的一部分,看起来像部除外每个PARM只是一个值:SSRS如何将多个多值参数传递给URL

... & p_IncidentStartDate = 2015年1月1日& p_IncidentEndDate = 2016年2月25日& p_DepartmentId = QDP00000000000000041 & p_DepartmentId = QDP00000000000000008 & p_DepartmentId = QDP00000000000000011 & p_TouchpointId = QSE00000000000000075 & p_GeneralIssueId = DSE00000000000000021 & p_SpecificComplaintId = DSE00000000000000054 & p_IsSubmitted = 1 & p_formGiftCardStatus =待定

数据集中使用的存储过程使用“SplitString”函数以逗号分隔参数。所以,当如果我手动运行PROC,我通过PARMS这样的:

enter image description here

有一些其他的方式来传递比一次一个值等参数? (我读了很多帖子,但找不到有效的答案)。

回答

0

其中之一,你可以有一个手动选项选择名为“全部”,并改变你的查询逻辑看起来像这样:

SELECT * 
FROM TABLE 
WHERE (p_DepartmentId IN (@p_DepartmentId) OR @p_DepartmentId = 'All') 

我假设p_DepartmentId是PK?不幸的是它太长了。我会研究this answer的有效性。但我认为后一种解决方案需要很多额外的工作。创建一个自定义的“全部”条目可能会更容易,如上所示。只需将它烘焙到返回部门数据集的查询中,就像这样。

SELECT 'All' AS p_DepartmentId 
UNION 
SELECT p_DepartmentId FROM TABLE 
+0

我认为这变得更加复杂。我们不仅需要能够“选择全部”,我们需要能够选择多个选项或选择空值(该字段是可选的)。我认为我们将不得不使用动态SQL。其中一个窍门是,如果它是一个多值参数,我不能允许NULL值。 – Laurel