0

在 SSRS 中,我创建了一个数据集,根据他们的关系返回(大致)有关个人的信息和有关公司的信息:

#####################################################################
# Name     # Roles # LinkedTo # Birthdate  # Adress # CompanyAdress #
#####################################################################
# Joe      # VP    # Corp A   # 1945-01-01 # 123    # 456           #
# Joe      # CEO   # Corp A   # 1945-01-01 # 123    # 456           #
# Joe      # VP    # Corp B   # 1945-01-01 # 123    # 543           #
# Bill     # CEO   # Corp B   # 1950-12-31 # 234    # 543           #
#####################################################################

我的报告包含 2 个部分。第一个显示人的信息,第二个显示他们的链接。

######################################
# Joe    # 1945-01-01   # Roles(???) # <-- This is a subreport
######################################
# Linked to : Corp A (VP)            # 
# Linked to : Corp A (CEO)           # 
# Linked to : Corp B (VP)            #
######################################

######################################
# Bill    # 1950-12-31   # ???       # <-- same subreport
######################################
# Linked to : Corp B (CEO)           #
######################################

子报表在一个组中,根据数据集的名称列进行过滤。

我想列出我个人的所有角色(Joe 的副总裁、CEO 和副总裁,Bill 的 CEO)。

分组似乎导致我的子报表只接收第一个值(Joe:VP,Bill:VP)而不是数组。

我指出我的参数@Roles 可以接收多个值。但这似乎还不够。

我应该如何改变它?

4

1 回答 1

1

如果您要获取数组中的第一个索引项,则参数的问题可能是它的 AVAILABLE 或默认值设置不正确。EG:如果我设置一个参数和我一起去,它非常简单,比如:

declare @Temp table ( id int, Name varchar(8) )

insert into @Temp values (1, 'A'), (1, 'B'), (2, 'C');

Select 
  Id
, Name
from @Temp

如果我有一个包含子报表和其他内容的分组,即使它允许多个值,它也可能只设置一个值。如果您希望您的参数与范围无关(这意味着它不关心报告中确定值的位置)。您可以将其可用值和默认值设置为“从查询中获取值”,并将满足的数据集设置为仅返回相同的静态值,它只会每次都获取这些值。

您对一个位于完全不同的 RDL 文件中的报告(好像您有)执行此操作,并将其设置为只有名称的参数,而忘记其他任何内容。然后,您将其与另一个报表的名称相关联,仅作为其变量。我会进行测试,您可以输入不同的名称,并且每次都会提供相同的数据。通常,当报表嵌套并且有多个参数或共享集时,就会出现问题。永远不要有两个存在父子关系的报告共享数据集恕我直言,因为您可能会遇到分组更改级别的问题。

理论上,如果您可以输入 1,并且您的子报表会给出两行“A”和“B”,那么如果您设置了一个与报表绑定的假装参数 @Id 并添加了以下行:“Where Id = @ID”。为了测试我的报告,我应该输入 1 或 2,它应该给出两个不同的值。如果是这样,我知道这份报告正在按设计工作,并且它的调用在某种程度上是错误的。如果没有,那么子报告首先是问题。如果报表显示的大小和数据与您对同一个人进行测试时的大小和数据不同,则说明方向和大小存在问题,或者分组导致仅显示报表的一部分。我已经报告了子报告的折叠,一旦显示报告,宽度就会增加,所以我知道如果您使用的是 SSRS 2008R2 或更高版本,这将起作用。

我的示例非常简单,但您可以将数据应用到具有不与主报表共享的常规数据集的子报表(尤其是与谓词)。

于 2013-07-25T20:45:28.323 回答