我遇到过几个我只有一个报告的情况,但是用户需要两种方式来运行它。例如,他们想要输入员工ID并提取单个员工记录,或者他们想要进入公司和部门,或多个公司和部门,并返回所有选定部门的员工记录。 comapnies。
我知道如何做级联参数的事情,所以我可以做任何一种方式,但我不想要有2个报告,我想有一个带有可选参数的报告。我设想在他们第一次打开报告时有两个标签或复选框,或者说,“点击查看单个记录”和“点击查看多个记录”然后他们选择哪一个,他们可以输入参数和运行
我一直在研究,我倾向于子报告和/或在参数中使用ISNULL并将它们标记为'allow null'。准备玩它,但如果有人有一个漂亮的教程的链接,我会非常感激。感谢。
答案 0 :(得分:1)
你还可以轻松地从SSRS中挤出来:
您的数据集将如下所示。
@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作为最终参数传递给报告。