【问题标题】:Build multiple reports with MS Report Builder 3.0使用 MS Report Builder 3.0 构建多个报告
【发布时间】:2017-09-08 09:56:18
【问题描述】:

我有一个程序在 SQL db 中填充 2 个表,我们称它们为 tUsertItems

tItems 将包含 3 行带有 piece 字段的行,而tUser 将包含 1 行带有 totalNoOfPieces 字段的行。

我在 MS Report Builder 3.0 中创建了一个报告,显示我需要的任何内容,将这两个表都添加到我的数据集中,其中一个表达式应该使用上述字段显示 Piece 1 of 3

我正在使用

=CStr(First(Fields!piece.Value, "DataSet1")) + " of " + CStr(First(Fields!totalNoOfPieces.Value, "DataSet1"))

我将如何让 RB 为我生成 totalNoOfPieces 相同的报告,其中唯一改变的是 Piece x of y 部分?

(我想我要问的是如何做到这一点,所以我得到了 3 份代表报告

SELECT * FROM tItems
INNER JOIN tUser ON tItems.ID=tUser.ID

在那些报告中)

编辑:我应该指定,我知道我可以添加一个参数并使可用值成为SELECT piece FROM tItems,但我想知道如何为所有可用值自动生成报告。

【问题讨论】:

  • 您的意思是您希望报告文件以编程方式生成,因此有单独的 RDL 文件,或者您只是希望报告本身具有用于不同数据的多个部分?跨度>
  • @Rich 我的意思是我希望报告是 3 个相同的部分,但参数已更改,可以在同一个文件中。就像我有一个值为 1、2 和 3 的片段的参数一样,我想获得具有更改该参数的 3 个相同部分的报告。
  • 您想要三个部分,还是只想要一个部分,具体取决于用户输入的参数?如果您想要三个部分,请运行您在问题中指定的查询。您可以制作一个因piece.Value 而异的“列表”,并在其中为每个piece.Value 创建一个表格。如果您只想要一个部分,则需要创建一个 SSRS 参数,向用户询问piece.value,以及来自不同部分的可用值。
  • @Rich 也许这会澄清更多:这就是我点击运行时得到的:i.imgur.com/4uumd2g.jpg;这是我点击运行时想要得到的:i.imgur.com/0dgKJYl.jpg - 当然总数取决于实际有多少。
  • 查看在报表上使用列表(它的另一个控件,如表格或矩阵),其中列出了不同的部分。然后在列表中,包括您当前的视觉内容。你不再需要用户参数了。

标签: sql-server reporting-services reportbuilder3.0


【解决方案1】:
  • 创建一个接受两个参数的报告版本,例如@CurrentPiece 和@TotalPieces 以及您当前需要的任何其他参数。您无需为参数设置可用值,因为用户永远不会直接使用此报告。
  • 通过在中键入参数值来手动测试报告的工作
  • 创建一个新报告,接受参数@TotalPieces 以及您当前需要在步骤 1 中传递给报告的任何其他内容。
  • 创建一个数据集(比如dsLoop)并将其查询定义设置如下:

dsLoop 查询:

   DECLARE @counter int = 1
   DECLARE @t TABLE (PieceNum int)

    WHILE @TotalPieces>= @counter
        BEGIN
            INSERT INTO @t SELECT @counter
            SET @counter = @counter +1
        END

    SELECT * FROM @t ORDER BY rownum`
  • 在报表中添加一个矩阵并将数据​​集属性设置为dsLoop
  • PieceNum 从数据集字段列表拖到显示“列”的单元格(矩阵的右上方单元格)。这将创建一个按PieceNum 分组和排序的列组
  • 在数据单元格中,插入子报表并将子报表名称设置为您在步骤 1 中创建的报表
  • 将子报表的@CurrentPiece 参数设置为PieceNum(来自数据集),并将@TotalPieces 参数设置为循环报表的@TotalPieces 参数。
  • 设置子报表所需的任何其他参数。
  • 设置适合的列宽。

这应该会给你一个工作报告,你只需要整理/调整任何不太正确的地方。

如果不清楚,请告诉我,我会做一个模型,以便您看到它的实际效果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多