代码之家  ›  专栏  ›  技术社区  ›  Philter

在VS 2010下将参数传递给RDLC中的子报表

  •  2
  • Philter  · 技术社区  · 15 年前

    目前我在VS2010的一个报告网站上工作,使用的是ASP.NET4.0和2010 RDLC设计器。我正在生成的报表类似于主详细信息报表,但我正尝试使用嵌套表来完成此操作。

    我的问题是,我试图将字段值从主报表传递给子报表。表格设置如下所示:

    2张桌子

    第一个表:[RecordID,Name,Date,] 第二个表:[RecordID,Description,DueDate]

    我想做的是这样一张桌子:

    -------------------
    |  Name  |  Date  |
    ------------------------------------
       |  Description1 |  DueDate      |
    ------------------------------------
       |  Description2 |  DueDate      |
    ------------------------------------
    | Name2 | Date2 |
    -----------------
    

    当我试图将RecordID作为一个参数传递给子报表时,由于在设计器UI中找不到允许我向RDLC文件添加报表参数的任何位置,因此必须在子报表的XML中手动定义该参数,因此从主报表中得到一个错误,该错误表示:

    An error occurred during local report processing.
    Value cannot be null. Parameter name: value 
    

    所以在它到达加载子报表的点之前,它似乎就出错了。

    我得到的数据发送到主报表刚刚好,如果我删除了子报表的参数,数据通过。但是如果我添加参数,报告就会抛出错误。

    有人知道这是什么原因吗?

    3 回复  |  直到 15 年前
        1
  •  10
  •   Philter    15 年前

    事实上我最终弄明白了。

    报表数据 窗户开着。

    如果找不到,请转到“查看”并单击“报表数据”。

    参数 文件夹并在那里添加参数。

    在参数声明框中,确保选择 允许空值 允许空白值 如果是文本类型。这将阻止错误的发生。

        2
  •  1
  •   Dan    13 年前

    似乎没有人理解子报表数据需要基于主报表列值显示/筛选。很抱歉抱怨,但我花了很长时间才明白。

    Public Sub SubreportProcessingEventHandler(ByVal sender As Object, ByVal e As SubreportProcessingEventArgs)
       'e.Parameters.Item(0) is the report parameter defined in Sub-report
        ObjectDataSource2.SelectParameters("Param1") = New Parameter("Param1", DbType.Int32, e.Parameters.Item(0).Values(0))         
         ObjectDataSource2.SelectParameters("Param2") = New Parameter("Param2", DbType.String, e.Parameters.Item(1).Values(0))
        e.DataSources.Add(New ReportDataSource("SubReportDataSourceName", ObjectDataSource2))
    End Sub
    
        3
  •  0
  •   DRapp    13 年前

    我刚刚遇到了同样的事情,从VS2005转换报告。无论如何,我发现的另一件事是参数必须在两个地方设置。。。

    此外,从主报表中,如果右键单击子报表“属性”,则会有一个“参数”部分要传递给子报表。这将来自主报告中驱动子报告的任何记录基础。

    只是想将此作为澄清传递给其他人,他们可能会遇到或只是在学习如何处理VS2010中的子报告。

    推荐文章