你仍然可以擠壓出舒適的SSRS什麼:基於數據集
- 多值公司參數;
- 基於自己的數據集級聯(來自公司)多值部門參數;
- 可選的多值員工ID參數,基於可能過濾公司/部門的數據集;
- 一個可選的自定義員工id參數,純粹的INT輸入;
您的數據集可能是如下如下內容。
對於@Company
:
SELECT CompanyId, -- Param value
CompanyName -- Param display in SSRS
FROM vw_AllCompanies
併爲@Department
:
SELECT DepartmentId, -- Param value
DepartmentName, -- Param display in SSRS
FROM vw_AllDepartments
WHERE CompanyId = @CompanyId
而對於@EmployeeId
:
SELECT EmployeeId,
FullName
FROM vw_Employees
WHERE (DepartmentId = @DepartmentId AND CompanyId = @CompanyId)
OR (@DepartmentId IS NULL AND CompanyId = @CompanyId) -- Optional
然後你的主數據集會做:
SELECT * -- Okay, don't use "*", but select actual columns :)
FROM vw_AllMyData
WHERE EmployeeId IN (@EmployeeId) -- The cascaded param
OR EmployeeId = @SomeCustomEmployeeId -- The custom INT input param
以我的經驗,這有點笨重,但可能是最好的你可以擺脫基本的SSRS。如果你想要更多的靈活性,我建議你在你的應用程序周圍建立一些東西,並將ID作爲最終參數傳遞給報告。
酷我很接近,謝謝你。一個問題;如果我有一個參數設置爲'from query'的可用值,我不能將它設置爲'accept null'(我的意思是,我可以選中該框,但是當我運行報告時,它是igonored並且需要一個值)。這聽起來是對的嗎?或者我需要處理我的查詢? – BattlFrog
在數據集查詢中執行此操作:'SELECT Id,Name FROM vw_Companies UNION ALL SELECT NULL,'None''來解決該問題。 – Jeroen