更新:我在这里提出了一个更普遍的问题:Can I do two levels of linking in Crystal Reports?
我在VB.NET和Visual Studio 2005中使用Crystal Reports。
我有一个包含多个子报告的报告。我将List(Of MainStuff)设置为主报告的数据源。我将List(Of SubreportStuff)设置为子报表的数据源。每个SubreportStuff都有一个链接到特定MainStuff的键,因此报表将每个MainStuff项目与其相关的SubreportStuff项目组合在一起。 (或者,在DB级别,SubreportStuff项目有一个外键,这是MainStuff中的主键。)
下面显示了对话框的Load函数,其中包含CrystalReportsViewer。在Crystal Reports报表编辑器(在VS 2005中)中,我将子报表链接设置为仅将相关项目拉入报表的该部分。
Imports System.Windows.Forms
Public Class dlgMyReport
Private rpt As New MyReport
Public theMainList As New List(Of MainStuff)
Dim theSubreportList As New List(Of SubreportStuff)
Private Sub dlgMyReport_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
rpt.SetDataSource(theMainList)
If theSubreportStuff.Count > 0 Then
rpt.Subreports.Item("subReport").SetDataSource(theSubreportList)
End If
Me.StuffViewer.ReportSource = rpt
End Sub
... ' other subs and functions
End Class
这很好用。
现在,我需要做的事情本质上是相同的,但是根据子报告项目中的键来拉取项目。这意味着在子报表中有一个子报表。但是,我似乎没有这样做(当我尝试插入已经是子报表的东西时,插入子报表的选项会变灰)。
有没有办法可以做到这一点? (我可以以某种方式将子报告关系降低到另一个级别吗?)
一如既往地谢谢!
答案 0 :(得分:3)
Crystal Reports中无法在子报表中显示子报表。