[英]Twp multi select parameters in SSRS not displaying results for when selected more than one value
我有一個問題,SSRS 報告不填充第二個多值下拉列表,該列表依賴於第一個多值下拉列表,因此不填充報告。
因此,我在這里嘗試做的是從第一個下拉列表中為選定城市的建築承包商填充 SSRS 報告,並從第二個下拉列表中填充選定的技能集,一旦我們選擇了城市下拉列表,就會填充該報告。
但我的問題是當我選擇一個城市時,技能的下拉列表會毫無問題地填充,當我選擇多個城市時,我的技能下拉列表沒有任何價值。
我的代碼如下。 我有 3 個數據集。
數據集 1(主要)
ALTER PROCEDURE [dbo].[RPT_ADM_Total_Contractors]
@Office nvarchar(255),
@Start datetime,
@End datetime,
@Servicetype nvarchar(255)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT fs.skillname,fa.NEW_ContractorIDNAME AS ContractorName, fa.new_Contractorstatusname AS Contractorstatus,
fa.createdon AS CreatedDate, fa.new_addresscity AS City
FROM
Filterednew_contrator fa
join
FilteredService fs
on fa.new_service = fs.serviceid
WHERE
fa.new_sitename IN (@Office )
AND fs.skillname IN (@Servicetype)
END
數據集 2
ALTER PROCEDURE [dbo].[RPT_ADM_Total_Contractors_Officelist]
@Start date,
@End date
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT DISTINCT fa.new_sitename
FROM
Filterednew_contrator fa
join
FilteredService fs
on fa.new_service = fs.serviceid
WHERE
new_admitdate between @Start and @End
AND new_sitename like 'Office%'
fa.new_service is not null
END
數據集 3
ALTER PROCEDURE [dbo].[RPT_ADM_Total_Contractors_Servicetypelist]
@Office nvarchar(255)
--@Start datetime,
--@End datetime
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT DISTINCT fs.skillname
FROM
Filterednew_contrator fa
join
FilteredService fs
on fa.new_service = fs.serviceid
WHERE
fa.new_sitename in (@Office)
order by fs.skillname
END
我有 4 個參數
@Start date/time
@End date/time
@Office "Allow Multivalue" AND gets populated from dataset 2
@Servicetype "Allow Mutivalue" AND gets populated from dataset 3
我嘗試使用 =Join(Parameters!Office.Value,",") 但沒有用。 我希望有人能幫我解決這個問題。
謝謝。
您有 2 個選擇。
選項 1. 將 SSRS 下拉列表設為單值下拉列表。
如果這不是一個可行的選擇,那么這里是選項 2:
您將不得不為存儲過程中的@Office 和@Servicetype 參數創建類似於 (n)varchar(1000); 的數據類型。 足夠長的時間來處理具有所有可能值的字符串。 然后您必須將字符串拆分為單獨的值,以便您可以在 IN 子句中使用它們。 這是我過去使用過的拆分 UDF(並在此站點上多次發布)。
CREATE FUNCTION [dbo].[udf_Split]
( @List varchar(8000),
@Delimiter varchar(5)
)
RETURNS @TableOfValues table
( RowID smallint IDENTITY(1,1),
[Value] varchar(100)
)
AS
BEGIN
DECLARE @LenString int
WHILE len( @List ) > 0
BEGIN
SELECT @LenString =
(CASE charindex( @Delimiter, @List )
WHEN 0 THEN len( @List )
ELSE ( charindex( @Delimiter, @List ) -1 )
END
)
INSERT INTO @TableOfValues
SELECT substring( @List, 1, @LenString )
SELECT @List =
(CASE ( len( @List ) - @LenString )
WHEN 0 THEN ''
ELSE right( @List, len( @List ) - @LenString - 1 )
END
)
END
RETURN
END
一旦你有了它(在你的數據庫中),你可以在 WHERE 子句中將你的 SP 代碼更改為如下所示。
WHERE
fa.new_sitename IN (SELECT value FROM dbo.udf_Split(@Office, ','))
AND fs.skillname IN (SELECT value FROM dbo.udf_Split(@Servicetype, ','))
享受!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.