Report Builder 3.0 - 允许用户在生成报告后添加数据

时间:2018-01-15 04:11:30

标签: reporting-services ssrs-2012

对一夜之间生成的多维数据集使用Report Builder 3.0。

我设计的报告用于存档或传输(物理)病人的文件。用户运行报告,打印报告和然后将其附加到文件中,然后将文件发送到将存档/发送文件的中心区域。

该报告有许多参数,旨在让单个患者返回。一切正常。

其中一个参数(@prmReason)是文件发生的唯一选择,例如"转移" (将文件传输到另一个办公室),"存档 - 关闭","存档 - 已故","存档 - 多余" (办公空间有限,因此工作人员会保存较旧的文件)。

返回的其中一个字段是CloseReason。该字段始终具有值。如果数据库中的字段为空(因为客户端尚未关闭),则它将包含以下值:"未知"。

此字段(以及其他字段)显示或隐藏,具体取决于@prmReason。再次 - 所有工作都没有问题。

现在是棘手的一点 如果@prmReason ="存档 - 关闭"或者"存档 - 已故"然后报告将显示CloseReason 问题是如果CloseReason =" Unknown"然后我需要知道文件关闭的原因&将其显示在报告上。

我希望用户能够从关闭原因列表中选择一个值。然后,我希望选择显示在报告上。显然,如果有真正的原因,那么显示这个值。

所以我之后的效果是: 用户选择参数&运行报告。 报告然后检查为什么报告正在运行(例如@prmReason)。 如果@prmReason =("存档 - 关闭"或"存档 - 已故")和CloseReason ="未知" 然后以某种方式生成用户可以选择的CloseReasons列表。然后,该值将显示在报告上。 我甚至可以应对它是一个自由文本字段。只是为了让中心区域可以在必要时更新数据库。保存电话/电子邮件等。

(是的,我知道我可以将列表作为用户在打印报告后打勾的一系列复选框,但这在其他报告中是一种有用的功能。)

编辑:CloseReasons的空值与stackoverflow格式冲突(抱歉没有正确审核帖子)。值实际上小于符号,然后是单词Unknown,然后大于symbol。它并没有真正影响问题

1 个答案:

答案 0 :(得分:0)

您可以添加其他隐藏参数。

如果此参数设置为,则会在报表上显示一个包含CloseReasons列表的小表。

然后设置表格单元格的操作属性以打开报表,选择现有报表作为要打开的报表,但这次您可以传递最终参数的值,以及显示关闭报告中的原因也会隐藏上述关闭原因选择表。

更新明确更清楚。

以下内容基于Northwind示例数据库。我有一个指向此数据库的共享数据源。

制作新报告。

添加指向共享Northwind数据源的数据源

使用以下查询

添加指向上述数据源的新数据集
SELECT 
    EmployeeID,
    FirstName, LastName, Address, City, Country, Title, Notes
 FROM Employees
 WHERE EmployeeID = @EmployeeID

在报告中添加一些字段以显示一些基本信息。

我们现在有一个简单的报告,其中包含一个参数@EmployeeID

接下来,我们要为每位员工展示一些行动。为了提高灵活性,我要根据员工Country使此列表动态化。这个清单可能是静态的。

使用以下查询

创建新数据集dsActions
    DECLARE @actions TABLE(ActionID int, ActionLabel varchar(20))

    -- Get employees country
    DECLARE @Country varchar(20) = (SELECT Country FROM Employees WHERE EmployeeID = @EmployeeID)

    IF @Country = 'UK'
       BEGIN
          INSERT INTO @actions VALUES
          (1,'Sack them'),
          (2,'Buy them a pint'),
          (3,'Promote')
       END
    ELSE
       BEGIN
          INSERT INTO @actions VALUES
          (1,'Fire them'),
          (2,'High 5 them'),
          (3,'Ask them to run for office')
       END

SELECT * FROM @actions

在报告中添加一个表格以显示这些值。

目前我的设计看起来像这样。 (所有表达式都是来自第一个数据集的简单字段,用于显示员工详细信息,没什么特别的) enter image description here

当我运行它时,我得到了它。

enter image description here

好的,现在所有的基础知识都已完成,我们需要能够再次调用此报告,但已经选择了一个操作。我们可以使操作表可单击,并将操作标签传递给报告。 它是同一份报告,我们只会有一份报告。

首先,在报告中添加一个名为action的新参数,并将其隐藏起来。添加默认值' noaction'。

接下来,我们只想在action参数设置为' noaction'时显示我们的操作表。为此,请将操作表(tablix)的Hidden属性设置为以下

=Parameters!action.Value <> "noaction"

接下来,我们要添加一个显示结果action参数的文本框,但仅当action参数不是noaction时才会显示。

因此,请添加文字,将其表达式设置为=Parameters!action.Value,将隐藏属性设置为=Parameters!action.Value = "noaction"

最后,我们需要让我们的行动清单调用我们的报告,但需要采取具体行动。为此,我们需要修改操作表。

首先保存报告,无论您选择什么名称,您将选择的名称作为报告将自行调用的目标报告。

右键单击包含ActionLabel的单元格,然后转到文本框属性。

选择操作选项卡,然后选择&#34;转到报告&#34;。选择您当前正在处理的报告的名称(报告将自行调用此实际报告)。

将EmployeeID参数设置为[@EmployeeID],将action参数设置为[ActionLabel]

为了简单起见,我使用了标签,但只要您在显示操作的文本框中对此进行说明,就可以传递ActionID。

您可以选择格式化文本,使其看起来像一个链接,

最终的设计和动作/参数设置如下所示

enter image description here

当我第一次运行报告时,我得到以下内容......

enter image description here

一旦我点击其中一个动作,我就会得到这个......

enter image description here

希望现在明白了。