Раздел сведений не отображается, если импортировано 2 вложенных отчета

#.net #crystal-reports

#.net #crystal-отчеты

Вопрос:

Я использую Crystal Reports для отображения данных отчета:

   Dim data As clsData = clsData.Instance
    Dim ds As New DataSet
    Dim tblMyCompany As DataTable = data.GetDataTableFromQuery("select * from tblCompany where Id = (select CompId from tblCheckIn Where Id =" amp; CheckId amp; ")")
    tblMyCompany.TableName = "tblCompany"
    ds.Tables.Add(tblMyCompany)
    Dim tblCheckIn As DataTable = data.GetDataTableFromQuery("select * from tblCheckIn where id=" amp; CheckId)
    tblCheckIn.TableName = "tblCheckIn"
    ds.Tables.Add(tblCheckIn)

    Dim CheckInRoomQuery As DataTable = data.GetDataTableFromQuery("select * from CheckInRoomQuery where ChId=" amp; CheckId)
    CheckInRoomQuery.TableName = "CheckInRoomQuery"
    ds.Tables.Add(CheckInRoomQuery)
    Dim tblCheckInExtra As DataTable = data.GetDataTableFromQuery("select * from tblCheckInExtra where ChId=" amp; CheckId)
    tblCheckInExtra.TableName = "tblCheckInExtra"
    ds.Tables.Add(tblCheckInExtra)

    Dim ob As rptCheckOut = New rptCheckOut

    ob.SetDataSource(ds)

    ob.Subreports(0).SetDataSource(CheckInRoomQuery)
    'ob.Subreports(1).SetDataSource(tblCheckInExtra)
    CrystalReportViewer1.ReportSource = ob
  

Этот код работает хорошо, если я вставляю только один вложенный отчет в раздел detail, но терпит неудачу, когда я вставляю второй вложенный отчет в раздел detail. Когда я вставляю 2 вложенных отчета в раздел сведений (раздел сведений a, раздел сведений b), то в обоих разделах данные не отображаются. Я уверен, что мой запрос содержит данные. Как я могу это решить?

Ответ №1:

Зачем вам нужны два вложенных отчета в одном разделе?

Вы можете решить вашу проблему двумя способами:

  1. Объедините 2 вложенных отчета в один, чтобы отобразить данные.

  2. Используйте 2 групповых заголовка для вложенных отчетов. Сгруппируйте их на основе одной записи из таблицы, чтобы они не повторялись.

Комментарии:

1. ob.Subreports(«rptCheckInRoom.rpt»). setDataSource(CheckInRoomQuery) ob.Subreports(«rptCheckInExtra.rpt»). setDataSource(tblCheckInExtra)