ОБНОВЛЕНИЕ: Я задал здесь более общий вопрос: Могу ли я сделать два уровня связывания в Crystal Reports?
Я использую Crystal Reports в VB.NET и Visual Studio 2005.
У меня есть отчет с несколькими подотчетами. Я устанавливаю List (Of MainStuff) в качестве источников данных для основного отчета. Я устанавливаю List (Of SubreportStuff) в качестве источника данных для подотчета. У каждого SubreportStuff есть ключ, который ссылается на определенный MainStuff, поэтому в отчете группируется каждый элемент MainStuff со связанными с ним элементами SubreportStuff. (Или на уровне БД элементы 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
Это отлично работает.
Теперь, однако, то, что мне нужно сделать, это по сути то же самое, но вытащить предметы на основе ключей в подотчете 1017 *. Это будет означать наличие подотчета в рамках подотчета. Однако не похоже, что я могу это сделать (опция для вставки подотчета недоступна, когда я пытаюсь вставить что-то, что уже является подотчетом).
Есть ли способ, которым я могу это сделать? (Могу ли я каким-то образом перенести отношения подотчета на другой уровень?)
Спасибо как всегда!