【问题标题】:Adding static data to report builder to use in report将静态数据添加到报表生成器以在报表中使用
【发布时间】:2018-09-17 08:49:12
【问题描述】:

我正在使用报告生成器 3.0 在供应商环境中创建报告,我只能访问他们的数据源。我们有静态数据,需要与我们从他们的模型创建的数据集结合使用,我正在尝试弄清楚如何将我们的数据添加到报告中以用于查找值。

例如:

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

我想要一个可以查找的数据集来获取这些值,但我可以让它工作的唯一方法是创建一个包含数十万个 IF 语句的报告代码函数:IF ItemNo = "12345"然后 ItemName = "XYZ 产品"

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

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

提前谢谢你, 埃里克。

【问题讨论】:

    标签: reporting-services dataset reportbuilder3.0 reportbuilder


    【解决方案1】:

    您可以添加使用表变量的共享数据集。所以只需创建一个新的共享数据集并使用类似的查询

    DECLARE @t TABLE(ItemNo int, ItemName varchar(100))
    INSERT INTO @t VALUES
        (12345, 'XYZ Product'),
        (23456, 'ABC Product')
    SELECT * FROM @t
    

    您可以在每个报告中使用它并对其进行查找以获取您需要的数据。

    希望您有足够的访问权限来创建共享数据集,否则您必须将其复制到每个报告中,但它会比数千个 IIF 更快

    【讨论】:

    • 感谢您的回复。不幸的是,除了提供的数据源之外,我无法创建数据集。创建数据集时,在数据集属性中,我唯一的选择是选择一个数据源(现有),然后以文本形式输入查询,看起来它必须是 XML,这不是我的强项。我也可以对数据集使用查询设计器,但这需要我选择一个预定义的视角。
    • 啊,“透视”这句话让我觉得您正在使用 SSAS/MDX 作为数据源。如果这是真的,您可能需要编辑问题上的标签,因为方法会有所不同。
    • 为什么是表变量?在这种情况下,选择/联合不都可以工作吗?
    • 您可以使用联合选择,但这会慢得多。无论如何,这将不起作用,因为 OP 指出了其他限制。
    • 不确定实际来源是什么。我知道我不能使用 SQL 语句,因为这已经完成了。目前,带有 IF 语句的代码函数正在运行,但速度非常慢。
    【解决方案2】:

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

    【讨论】:

    • 除了将代码添加到单个报告中之外,我无法创建任何东西。除了 RDL 文件之外,我无法向报表服务器发布任何内容,也无法添加任何其他数据源而不是现有数据源。我曾尝试使用外部数据源,如 SQL 和共享点,但报告无法在验证时发布。我很确定供应商不会允许外部服务器链接。
    • 然后我会追求自定义 VBA 代码路线。您可以将其添加到每个 RDL,而无需任何其他权限或访问权限。如果您需要示例,我可以提供。
    【解决方案3】:
    1. 创建 XML 类型的数据源
    2. 创建数据集并设置第1步创建的数据源
    3. 将查询类型设置为文本
    4. 添加一些 XML 下面是一个示例

    您现在应该在输出中看到 3 列,我知道它已经晚了,但我自己正在寻找这个,希望能帮助其他人

    <Query>
        	<XmlData>
        		<?xml version="1.0"?>
        		<Months>
        			<Month MonthValue="1">
        				<Name="January" />
        				<ShortName="Jan" />
        			</Month>
        			<Month MonthValue="2">
        				<Name="February" />
        				<ShortName="Feb" />
        			</Month>
        			<Month MonthValue="3">
        				<Name="March" />
        				<ShortName="Mar" />
        			</Month>
        			<Month MonthValue="4">
        				<Name="April" />
        				<ShortName="Apr" />
        			</Month>
        			<Month MonthValue="5">
        				<Name="May" />
        				<ShortName="May" />
        			</Month>
        			<Month MonthValue="6">
        				<Name="June" />
        				<ShortName="Jun" />
        			</Month>
        			<Month MonthValue="7">
        				<Name="July" />
        				<ShortName="Jul" />
        			</Month>
        			<Month MonthValue="8">
        				<Name="August" />
        				<ShortName="Aug" />
        			</Month>
        			<Month MonthValue="9">
        				<Name="September" />
        				<ShortName="Sep" />
        			</Month>
        			<Month MonthValue="10">
        				<Name="October" />
        				<ShortName="Oct" />
        			</Month>
        			<Month MonthValue="11">
        				<Name="November" />
        				<ShortName="Nov" />
        			</Month>
        			<Month MonthValue="12">
        				<Name="December" />
        				<ShortName="Dec" />
        			</Month>
        		</Months>
        	</XmlData>
           </Query>

    【讨论】:

      猜你喜欢
      • 2022-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多