SSRS子报表,参数只呈现一组

时间:2016-06-23 22:33:22

标签: sql-server-2008 reporting-services visual-studio-2008

我想构建一个报告,返回一组员工的记录,按特定日期和主管,并按员工呈现报告(如批量)。我这样做的主要报告和3个子报告。我的子报表单独工作,我只有一个子报表从main呈现,但只显示组中的第一条记录。

main上的数据集有3个参数,USERID,BegDate,EndDate。子报表上的数据集采用EMPID,BegDate,EndDate。我在main和子报表参数上插入了子报表,如下所示:

    Name      Value

    CurEmp     =First(Fields!EMPID.Value, "DataSet1")
    BegDate    [@BegDate]
    EndDate    [@EndDate]

在DataSet1 / sql查询的where子句中使用CurEmpWHERE EMPID = @CurEmp

DataSet1中的主要报告参数是:

Name     Value
@USERID     [@USERID]
@BegDate    [@BegDate]
@EndDate    [@EndDate]

现在我意识到参数=First中的表达式中的Value应该只呈现第一条记录,但我没有改变任何内容就会呈现。我做了tutorials并用Google搜索了2天。我可以让简单的子报告工作,但似乎没有什么似乎适用于我想要做的事情。有人可以指导我一个适用于我的情况的例子吗?

BTW我已将我的VS2008环境设置为商业智能项目。

更新:我在下面添加了我的sql查询,以帮助解释@Sam的每个建议。我实际上开始考虑这样一个事实,也许我写的查询错了。我对主报告查询应该与子查询进行比较感到困惑....我希望这有助于澄清我的意思。

主要报告数据集=

SELECT
v.EMPID,
UPPER(p.FirstName + ' ' + p.LastName)  as EmpFullName, 
v.dtmDate,  
v.TCode,  
v.Hours, 
v.ProjectNo,  
from vwPersonSummary v
join tblPerson t on v.EMPID = p.EMPID
WHERE  v.USERID = @USERID  --Supervisor’s EMPID
AND 
v.dtmDate BETWEEN @BegDate AND @EndDate  
ORDER BY v.EMPID, v.dtmDate

子报告数据集=

SELECT
v.EMPID,
UPPER(p.FirstName + ' ' + p.LastName)  as EmpFullName, 
v.dtmDate, 
v.Tcode,  
v.Hours, 
v.ProjectNo  
from vwPersonSummary v
join tblPerson t on v. EMPID = t. EMPID
WHERE
v.EMPID =  @CurEmp 
AND v.dtmDate BETWEEN @BegDate AND @EndDate 
ORDER BY v.dtmDate

1 个答案:

答案 0 :(得分:0)

所以你的修复/答案将如下所示。

从主报表定义参数时,它应该是这样的。

=Join(LookupSet(1,1,Fields!EMPID.Value,"DataSet1"),",")

确定后,请确保将子报表参数数据类型设置为文本,并选中允许多个值

之后,子报告的数据集不设置where条件。而不是在数据集属性中转到过滤器

表达式中设置类似

的内容
=CStr(Fields!EMPID.Value)

并将运算符设置为中,并将设置为如下所示。

=Split(Parameters!EmpId.Value(0),",")

基本上就是这样。希望这会有所帮助。