您仍然可以从 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 作为最终参数传递给报告。