2016-02-25 105 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