对一夜之间生成的多维数据集使用Report Builder 3.0。
我设计的报告用于存档或传输(物理)病人的文件。用户运行报告,打印报告和然后将其附加到文件中,然后将文件发送到将存档/发送文件的中心区域。
该报告有许多参数,旨在让单个患者返回。一切正常。
其中一个参数(@prmReason)是文件发生的唯一选择,例如"转移" (将文件传输到另一个办公室),"存档 - 关闭","存档 - 已故","存档 - 多余" (办公空间有限,因此工作人员会保存较旧的文件)。
返回的其中一个字段是CloseReason。该字段始终具有值。如果数据库中的字段为空(因为客户端尚未关闭),则它将包含以下值:"未知"。
此字段(以及其他字段)显示或隐藏,具体取决于@prmReason。再次 - 所有工作都没有问题。
现在是棘手的一点 如果@prmReason ="存档 - 关闭"或者"存档 - 已故"然后报告将显示CloseReason 问题是如果CloseReason =" Unknown"然后我需要知道文件关闭的原因&将其显示在报告上。
我希望用户能够从关闭原因列表中选择一个值。然后,我希望选择显示在报告上。显然,如果有真正的原因,那么显示这个值。
所以我之后的效果是: 用户选择参数&运行报告。 报告然后检查为什么报告正在运行(例如@prmReason)。 如果@prmReason =("存档 - 关闭"或"存档 - 已故")和CloseReason ="未知" 然后以某种方式生成用户可以选择的CloseReasons列表。然后,该值将显示在报告上。 我甚至可以应对它是一个自由文本字段。只是为了让中心区域可以在必要时更新数据库。保存电话/电子邮件等。
(是的,我知道我可以将列表作为用户在打印报告后打勾的一系列复选框,但这在其他报告中是一种有用的功能。)
编辑:CloseReasons的空值与stackoverflow格式冲突(抱歉没有正确审核帖子)。值实际上小于符号,然后是单词Unknown,然后大于symbol。它并没有真正影响问题
答案 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
在报告中添加一个表格以显示这些值。
目前我的设计看起来像这样。 (所有表达式都是来自第一个数据集的简单字段,用于显示员工详细信息,没什么特别的)
当我运行它时,我得到了它。
好的,现在所有的基础知识都已完成,我们需要能够再次调用此报告,但已经选择了一个操作。我们可以使操作表可单击,并将操作标签传递给报告。 它是同一份报告,我们只会有一份报告。
首先,在报告中添加一个名为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。
您可以选择格式化文本,使其看起来像一个链接,
最终的设计和动作/参数设置如下所示
当我第一次运行报告时,我得到以下内容......
一旦我点击其中一个动作,我就会得到这个......
希望现在明白了。