Dim adapter As New System.Data.SqlClient.SqlDataAdapter
            Dim cmd As New System.Data.SqlClient.SqlCommand
            Dim cmdstr As String = _
                    "select * from SendSubTicket where mainID in (select intID from SendMainTicket)"
            cmd.Connection = GlobalBase.current.connection
            cmd.CommandText = cmdstr
            adapter.SelectCommand = cmd
            adapter.Fill(Me.DsSendTicket1, "SendSubTicket")
            cmd.CommandText = "select * from SendMainTicket"
            adapter.SelectCommand = cmd
            adapter.Fill(Me.DsSendTicket1, "SendMainTicket")                     Me.SendSubTicketBindingSource.DataSource = Me.DsSendTicket1
            Me.SendSubTicketBindingSource.DataMember = "SendSubTicket"            '主报表数据源
            Me.SendMainTicketBindingSource.DataSource = Me.DsSendTicket1
            Me.SendMainTicketBindingSource.DataMember = "SendMainTicket"            Dim streamRder As New System.IO.StreamReader("E:\Soms.Net\Soms.Manager\Reports\SendsubTicket.rdlc")
            streamRder.ReadToEnd()
            System.Diagnostics.Debug.Write(streamRder.ToString())            ReportViewer1.LocalReport.LoadSubreportDefinition("SendsubTicket.rdlc", streamRder)
            Dim myReportDataSource1 As Microsoft.Reporting.WinForms.ReportDataSource = _
               New Microsoft.Reporting.WinForms.ReportDataSource( _
                                "SendSubTicket", Me.DsSendTicket1.Tables("SendSubTicket"))
            Me.ReportViewer1.LocalReport.DataSources.Add(myReportDataSource1)
            Me.ReportViewer1.RefreshReport()
子报表就是不能显示出来...不知道是我做错了..还是..怎么的
有谁做过吗..

解决方案 »

  1.   

    CrystalReport1 Cr1 = new CrystalReport1();
    Cr1.SetDataSource(ds.Tables["XXX"]);
    Cr1.Subreports[0].SetDataSource(ds.Tables["X1"]);//这是子报表1,填充的是数据表X1
    Cr1.Subreports[1].SetDataSource(ds.Tables["X2"]);//这是子报表2,填充的是数据表X2
    ...
    this.crystalReportViewer1.ReportSource = Cr1;
      

  2.   

    The sample code below worked for me. For this example, ReportName = "ReportNameValue" for the subreport within my main report
    void ShowReportInViewer()
    {
        this.MainReportViewer.Reset();    StreamReader report = File.OpenText(@"Reports\MyMainReport.rdlc");
        this.MainReportViewer.LocalReport.LoadReportDefinition(report);    StreamReader subReport = File.OpenText(@"Reports\MySubReport.rdlc");
        this.MainReportViewer.LocalReport.LoadSubreportDefinition("ReportNameValue", subReport);    ReportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(SubreportProcessingEventHandler);    this.MainReportViewer.RefreshReport();
    }
    void SubreportProcessingEventHandler(object sender, SubreportProcessingEventArgs e)
            {
                DataTable dt1 = DBHelper.GetData(obj.getdetailSQL(""), "objdetail").Tables[0];
                ReportDataSource rds1 = new ReportDataSource("ReportDB", dt1);
                e.DataSources.Add(rds1);
            }我测试过的可以用...