Report Builder 3.0 - 允许用户在报告生成后添加数据
Report Builder 3.0 - permit user to add data in after report generated
对夜间生成的多维数据集使用 Report Builder 3.0。
我正在设计的报告用于为患者存档或传输(物理)文件。用户 运行 报告,打印它,然后将其附加到文件,然后将这些文件发送到中心区域,该区域将 archive/send 文件放在。
该报告有许多参数是为 return 单个患者设计的。这一切都很好。
其中一个参数 (@prmReason) 是关于文件发生什么的单一选择,例如,"Transfer"(将文件传输到另一个办公室)、"Archive - closed"、"Archive - deceased"、"Archive - excess"(办公室 space 人手有限,因此员工归档 'older' 个文件)。
returned 字段之一是 CloseReason。这个字段总是有一个值。如果该字段在数据库中为空(因为客户端尚未关闭),则它将包含值:"Unknown".
根据@prmReason,显示或隐藏此字段(以及其他字段)。再次 - 所有工作都没有问题。
现在是棘手的部分。
如果 @prmReason = "Archive - closed" 或 "Archive - deceased" 则报告将显示 CloseReason.
问题是如果 CloseReason = "Unknown" 那么我需要知道文件关闭的原因并将其显示在报告中。
我希望用户能够从关闭原因列表中选择一个值。然后我希望选择显示在报告中。显然,如果有真正的原因,则显示此值。
所以我追求的效果是:
用户 select 的参数和 运行 的报告。
Report 然后检查报告为什么 运行(例如@prmReason)。
如果@prmReason =("Archive - closed" OR "Archive - deceased") AND CloseReason = "Unknown"
然后以某种方式生成用户可以 select 的 CloseReasons 列表。然后该值显示在报告中。
我什至可以应付它是一个自由文本字段。只是一些东西,以便中心区域可以在必要时更新数据库并保存 phone call/email 等
(是的,我意识到我可以将列表作为用户在打印报告后勾选的一系列复选框,但这在其他报告中将是一个有用的功能)。
编辑:CloseReasons 的空值与 Whosebug 格式冲突(抱歉没有正确检查 post)。值实际上小于符号,然后是单词 Unknown,然后大于符号。它并没有真正影响问题
您可以添加一个额外的隐藏参数。
如果此参数未设置,则在您的报告中显示一个小的 table,其中包含关闭原因列表。
您然后设置 table 单元格的操作 属性 以打开报告,选择您现有的报告作为要打开的报告,但这次您可以为最终参数传递一个值,其中,除了在报告中显示关闭原因外,还会隐藏上述关闭原因选项 table。
更新 说清楚更清楚。
以下内容基于 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
在报告中添加 table 以显示这些值。
目前我的设计是这样的。 (所有表达式都是来自第一个数据集的简单字段,用于显示员工详细信息,没什么特别的)
当我 运行 我明白了。
好的,现在所有的基础都已经完成了,我们需要能够再次调用这个报告,但是已经选择了一个动作。我们将使操作 table 可点击并将操作的标签传递给报表。
这是同一份报告,我们只会有一份报告。
首先,在报告中添加一个名为 action
的新参数并将其隐藏。添加默认值 'noaction'。
接下来,如果 action
参数设置为 'noaction',我们只想显示我们的操作 table。为此,将操作 table (tablix) 的 Hidden
属性 设置为以下
=Parameters!action.Value <> "noaction"
接下来我们要添加一个显示结果action
参数的文本框,但前提是action
参数不是noaction
.
所以添加一个文本,将它的表达式设置为=Parameters!action.Value
,将隐藏的属性设置为=Parameters!action.Value = "noaction"
最后,我们需要让我们的动作列表调用我们的报告,但带有特定的动作。为此,我们需要修改操作 table.
首先保存报表,无论你选择什么名称都是你将select作为目标报表的名称,因为报表会调用自己。
右键单击包含 ActionLabel
的单元格,然后转到文本框属性。
Select 操作选项卡,然后选择 "Go to report"。选择您当前正在处理的报告的名称(此实际报告将自称为报告)。
将 EmployeeID 参数设置为 [@EmployeeID]
,将 action
参数设置为 [ActionLabel]
为了简单起见,我使用了标签,但只要在显示操作的文本框中考虑到这一点,您就可以传递 ActionID。
您可以选择格式化文本,使其看起来像 link、
最终设计和 action/parameter 设置如下所示
当我第一次 运行 报告时,我得到以下...
只要单击其中一个操作,我就会得到这个...
希望现在一切都清楚了。
对夜间生成的多维数据集使用 Report Builder 3.0。
我正在设计的报告用于为患者存档或传输(物理)文件。用户 运行 报告,打印它,然后将其附加到文件,然后将这些文件发送到中心区域,该区域将 archive/send 文件放在。
该报告有许多参数是为 return 单个患者设计的。这一切都很好。
其中一个参数 (@prmReason) 是关于文件发生什么的单一选择,例如,"Transfer"(将文件传输到另一个办公室)、"Archive - closed"、"Archive - deceased"、"Archive - excess"(办公室 space 人手有限,因此员工归档 'older' 个文件)。
returned 字段之一是 CloseReason。这个字段总是有一个值。如果该字段在数据库中为空(因为客户端尚未关闭),则它将包含值:"Unknown".
根据@prmReason,显示或隐藏此字段(以及其他字段)。再次 - 所有工作都没有问题。
现在是棘手的部分。
如果 @prmReason = "Archive - closed" 或 "Archive - deceased" 则报告将显示 CloseReason.
问题是如果 CloseReason = "Unknown" 那么我需要知道文件关闭的原因并将其显示在报告中。
我希望用户能够从关闭原因列表中选择一个值。然后我希望选择显示在报告中。显然,如果有真正的原因,则显示此值。
所以我追求的效果是: 用户 select 的参数和 运行 的报告。 Report 然后检查报告为什么 运行(例如@prmReason)。 如果@prmReason =("Archive - closed" OR "Archive - deceased") AND CloseReason = "Unknown" 然后以某种方式生成用户可以 select 的 CloseReasons 列表。然后该值显示在报告中。 我什至可以应付它是一个自由文本字段。只是一些东西,以便中心区域可以在必要时更新数据库并保存 phone call/email 等
(是的,我意识到我可以将列表作为用户在打印报告后勾选的一系列复选框,但这在其他报告中将是一个有用的功能)。
编辑:CloseReasons 的空值与 Whosebug 格式冲突(抱歉没有正确检查 post)。值实际上小于符号,然后是单词 Unknown,然后大于符号。它并没有真正影响问题
您可以添加一个额外的隐藏参数。
如果此参数未设置,则在您的报告中显示一个小的 table,其中包含关闭原因列表。
您然后设置 table 单元格的操作 属性 以打开报告,选择您现有的报告作为要打开的报告,但这次您可以为最终参数传递一个值,其中,除了在报告中显示关闭原因外,还会隐藏上述关闭原因选项 table。
更新 说清楚更清楚。
以下内容基于 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
在报告中添加 table 以显示这些值。
目前我的设计是这样的。 (所有表达式都是来自第一个数据集的简单字段,用于显示员工详细信息,没什么特别的)
当我 运行 我明白了。
好的,现在所有的基础都已经完成了,我们需要能够再次调用这个报告,但是已经选择了一个动作。我们将使操作 table 可点击并将操作的标签传递给报表。 这是同一份报告,我们只会有一份报告。
首先,在报告中添加一个名为 action
的新参数并将其隐藏。添加默认值 'noaction'。
接下来,如果 action
参数设置为 'noaction',我们只想显示我们的操作 table。为此,将操作 table (tablix) 的 Hidden
属性 设置为以下
=Parameters!action.Value <> "noaction"
接下来我们要添加一个显示结果action
参数的文本框,但前提是action
参数不是noaction
.
所以添加一个文本,将它的表达式设置为=Parameters!action.Value
,将隐藏的属性设置为=Parameters!action.Value = "noaction"
最后,我们需要让我们的动作列表调用我们的报告,但带有特定的动作。为此,我们需要修改操作 table.
首先保存报表,无论你选择什么名称都是你将select作为目标报表的名称,因为报表会调用自己。
右键单击包含 ActionLabel
的单元格,然后转到文本框属性。
Select 操作选项卡,然后选择 "Go to report"。选择您当前正在处理的报告的名称(此实际报告将自称为报告)。
将 EmployeeID 参数设置为 [@EmployeeID]
,将 action
参数设置为 [ActionLabel]
为了简单起见,我使用了标签,但只要在显示操作的文本框中考虑到这一点,您就可以传递 ActionID。
您可以选择格式化文本,使其看起来像 link、
最终设计和 action/parameter 设置如下所示
当我第一次 运行 报告时,我得到以下...
只要单击其中一个操作,我就会得到这个...
希望现在一切都清楚了。