0

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

我知道如何做级联参数的事情,所以我可以做任何一种方式,但我不想有 2 个报告,我想有一个带有可选参数的报告。我设想当他们第一次打开报告时有两个选项卡或复选框或类似的东西,即“单击查看单个记录”和“单击查看多个记录”然后他们选择哪个,他们可以输入参数和跑。

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

4

1 回答 1

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 作为最终参数传递给报告。

于 2013-09-24T21:29:27.057 回答