更新:ここでより一般的な質問をしました: Crystal Reportsで2つのレベルのリンクを実行できますか?
VB.NETおよびVisualStudio2005内でCrystalReportsを使用しています。
いくつかのサブレポートを含むレポートがあります。メインレポートのデータソースとしてList(Of MainStuff)を設定しています。サブレポートのデータソースとしてList(Of SubreportStuff)を設定しています。各SubreportStuffには、特定のMainStuffにリンクするキーがあるため、レポートは各MainStuffアイテムを関連するSubreportStuffアイテムとグループ化します。(または、DBレベルでは、SubreportStuffアイテムには、MainStuffの主キーである外部キーがあります。)
以下は、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
これは正常に機能します。
しかし、今、私がしなければならないことは、本質的に同じことですが、サブレポート項目のキーに基づいて項目をプルします。これは、サブレポート内にサブレポートがあることを意味します。ただし、これを実行できるようには見えません(すでにサブレポートになっているものを挿入しようとすると、サブレポートを挿入するためのオプションがグレー表示されます)。
これを達成する方法はありますか?(サブレポートの関係を何らかの方法で別のレベルに下げることはできますか?)
いつもありがとう!