Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在SSRS中分组后,如何将字符串列表作为参数传递?_Arrays_Reporting Services_Parameters_Grouping - Fatal编程技术网

Arrays 在SSRS中分组后,如何将字符串列表作为参数传递?

Arrays 在SSRS中分组后,如何将字符串列表作为参数传递?,arrays,reporting-services,parameters,grouping,Arrays,Reporting Services,Parameters,Grouping,在SSRS中,我制作了一个数据集,根据关系大致返回个人信息和公司信息: ##################################################################### # Name # Roles # LinkedTo # Birthdate # Adress # CompanyAdress # ##################################################################### # Jo

在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           #
#####################################################################
我的报告包含两个部分。第一个显示此人的信息,第二个显示其链接

######################################
# 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:VP,Bill:VP,而不是数组

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


我应该如何更改它?

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

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

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

Select 
  Id
, Name
from @Temp
如果我有一个包含子报表和其他内容的分组,它可能只设置一个值,即使它允许多个值。如果希望参数不受作用域的影响,这意味着它不关心在报告中确定值的位置。您可以将其可用值和默认值设置为“从查询中获取值”,并将dataset met设置为仅返回与每次仅获取这些值相同的静态值

您对一个报告执行此操作,就像您在一个完全不同的RDL文件中看到的那样,并将其设置为只有名称的参数,而忽略其他任何内容。然后,您只将其作为变量按名称与另一个报表关联。我会做一些测试,你可以用一个不同的名字,每次都会得到相同的数据。通常,当报表嵌套且存在多个参数或共享集时,会出现问题。如果存在父子关系,则永远不要让两个报告共享一个数据集IMHO,因为在分组更改级别时可能会出现问题

理论上,如果您可以输入1,并且您的子报表将给出两行“A”和“B”,前提是您设置了一个绑定到报表的假装参数@Id,并添加了一行:“Where Id=@Id”。为了测试我的报告,我应该输入1或2,它应该给出两个不同的值。如果是这样的话,我知道这份报告是按照设计工作的,而且它的调用是错误的。如果没有,则子报告是第一个问题。如果报告显示的大小和数据与您在同一个人身上测试时显示的大小和数据不同,则说明方向和大小有问题,或者分组仅导致报告的一部分显示。我已经在子报告上完成了折叠报告,然后在报告显示后使宽度增加,因此我知道如果您使用的是SSRS 2008R2或更高版本,这将起作用


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

我将把单个/列表角色作为参数传递给子报表。事实上,我将所有数据作为参数传递给子报表。我也不知道你在解释什么。您是否建议我将personID传递给另一个查询/数据集以获取角色列表?我建议您传递单个字符串或int,并让子报表完成所有工作。但请确保两个报告之间不共享数据集。例如:如果Joe是这些级别,您可以设置一个报告来显示它,只需将“Joe”作为参数传入,以评估“Select Roles from tables where name=@name”。比尔也一样。然后,您有一个主报告,在每一行或每一组上只声明“为名称提供子报告”。然后子报表完成了一对多关系的所有工作,您只需将其呈现给与角色相关的人员即可。这是我自然会做的,但这意味着我在子报表中每人获得一个请求,并且我被告知将sql请求数限制在最低限度,以最大限度地提高性能。这样会不会慢很多?你说的10万、10万、10万等等有多少记录?一般来说,您仍然可以在SSR上使用缓存技术来限制无意中听到的内容。此外,您还通过执行“从person=@person的子集中选择对象”来限制按需范围。我甚至不确定它是否会有数百个。尽管如此,还有其他瓶颈,我从缓慢的视图中获取了大量数据。