Reporting services 向报表生成器添加静态数据以在报表中使用

Reporting services 向报表生成器添加静态数据以在报表中使用,reporting-services,dataset,reportbuilder3.0,reportbuilder,Reporting Services,Dataset,Reportbuilder3.0,Reportbuilder,我正在使用report builder 3.0在供应商的环境中创建报告,在该环境中,我只能访问他们的数据源。我们有静态数据,需要与我们从其模型创建的数据集结合使用,我正试图找出如何将数据添加到报表中以用于查找值 例如: 数据集包含AccountNo、OrderNo、ItemNo、Quantity等。 我需要能够显示一些关于ItemNo的属性,比如ItemName、ItemCost、ItemValue等 我希望有一个可以查找的数据集来获取这些值,但唯一可行的方法是创建一个包含数十万条IF语句的报告

我正在使用report builder 3.0在供应商的环境中创建报告,在该环境中,我只能访问他们的数据源。我们有静态数据,需要与我们从其模型创建的数据集结合使用,我正试图找出如何将数据添加到报表中以用于查找值

例如:

数据集包含AccountNo、OrderNo、ItemNo、Quantity等。 我需要能够显示一些关于ItemNo的属性,比如ItemName、ItemCost、ItemValue等

我希望有一个可以查找的数据集来获取这些值,但唯一可行的方法是创建一个包含数十万条IF语句的报告代码函数:IF ItemNo=“12345”然后ItemName=“XYZ Product”

至少可以说,这是缓慢而繁琐的。如果数据源在我的控制之下,我可以简单地在SQL中添加一个表,但在这种环境中我不能。我甚至尝试链接到外部数据源,这是环境所不允许的。我正在考虑创建某种XML数据,或者尝试将数据直接添加到RDL,但是我已经没有选择了

有人知道添加一组数据或创建包含静态值的嵌入式数据集的方法吗。任何帮助都将不胜感激

提前谢谢大家,,
Eric。

您可以添加使用表变量的共享数据集。因此,只需创建一个新的共享数据集并使用如下查询

DECLARE @t TABLE(ItemNo int, ItemName varchar(100))
INSERT INTO @t VALUES
    (12345, 'XYZ Product'),
    (23456, 'ABC Product')
SELECT * FROM @t
您可以在每个报告中使用它,并对其进行查找以获得所需的数据


希望您有足够的权限创建一个共享数据集,如果没有,您必须将其复制到每个报告中,但它将比数千个IIF快

您可以在报告的自定义代码部分的VBA中对其进行编码。和/或使其成为一个自定义DLL,可以从任何您想要的地方获取数据。在这种情况下,查找代码将包含在自定义DLL中(传入输入,代码返回查找)

  • 创建XML类型的数据源
  • 创建数据集并设置在步骤1中创建的数据源
  • 将查询类型设置为文本
  • 添加一些XML,下面是一个示例
  • 你现在应该在你的输出中看到3列,我知道已经很晚了,但我自己也在搜索,希望能帮助其他人

    
    
    感谢您的回复。遗憾的是,我无法使用提供的数据源以外的任何数据源创建数据集。在创建数据集时,在“数据集属性”中,我唯一的选项是选择一个数据源(现有),然后在文本中输入查询,看起来它必须是XML,这不是我的强项。我也可以对数据集使用查询设计器,但这需要我选择一个预定义的透视图。啊,短语“透视图”让我觉得您正在使用SSAS/MDX作为数据源。如果这是真的,您可能需要编辑问题上的标记,因为方法不同。为什么使用表变量?在这种情况下,选择/联合不是都有效吗?您可以使用联合选择,但速度会慢得多。在任何情况下,这都不会起作用,因为OP已经指出了其他限制。不确定实际来源是什么。我知道我不能使用SQL语句,因为这将是一笔交易。目前,带有IF语句的代码函数正在工作,但速度非常慢。除了向单个报告中添加代码之外,我无法创建任何东西。除了RDL文件之外,我无法将任何内容发布到报表服务器,也无法添加任何现有数据源以外的其他数据源。我曾尝试使用外部数据源,如SQL和share point,但报告在验证时未能发布。我很确定供应商不会允许外部服务器链接。那时我会采用自定义VBA代码路由。您可以将其添加到每个RDL,而无需任何其他权限或访问权限。如果你需要一个例子,我可以提供一个。