【问题标题】:SSRS Optional ParametersSSRS 可选参数
【发布时间】:2013-09-24 20:53:57
【问题描述】:

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

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

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

【问题讨论】:

    标签: reporting-services ssrs-2008


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

    【讨论】:

    • 酷我很接近,谢谢。一个问题;如果我将参数的可用值设置为“来自查询”,则无法将其设置为“接受空值”(我的意思是,我可以选中该框,但是当我运行报告时,它被忽略并需要一个值)。听起来对吗?还是我需要处理我的查询?
    • 在数据集查询中执行此操作:SELECT Id, Name FROM vw_Companies UNION ALL SELECT NULL, 'None' 以解决该问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多