SSRS可选参数

时间:2013-09-24 20:53:57

标签: reporting-services ssrs-2008

我遇到过几个我只有一个报告的情况,但是用户需要两种方式来运行它。例如,他们想要输入员工ID并提取单个员工记录,或者他们想要进入公司和部门,或多个公司和部门,并返回所有选定部门的员工记录。 comapnies。

我知道如何做级联参数的事情,所以我可以做任何一种方式,但我不想要有2个报告,我想有一个带有可选参数的报告。我设想在他们第一次打开报告时有两个标签或复选框,或者说,“点击查看单个记录”和“点击查看多个记录”然后他们选择哪一个,他们可以输入参数和运行

我一直在研究,我倾向于子报告和/或在参数中使用ISNULL并将它们标记为'allow null'。准备玩它,但如果有人有一个漂亮的教程的链接,我会非常感激。感谢。

1 个答案:

答案 0 :(得分:1)

你还可以轻松地从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作为最终参数传递给报告。