Диаграмма в нижнем колонтитуле в выпуске подотчета

У меня есть отчет с 3 наборами данных.

DS1 — номер региона, название/номер района, название теста, количество тестов, плата за тест за последний месяц.

DS2 — номер региона, номер округа, номер теста, MMYYYY, количество тестов, плата за тест за прошлый год, сгруппированные по MMYYYY.

DS3 — номер региона, номер теста, MMYYYY, количество тестов, плата за тест за прошлый год, сгруппированные по MMYYYY.

Макет отчета

Region Name (GroupHeader)
   District Name(GroupHeader) 
      Test Name (Details Section)   
   District Chart, bar chart of the last 12 months activity for a district/test combo (DS2) (GroupFooter)
Region Charts (GroupFooter –(the number of charts can be 1 to 20 based on the district data))

Каждый набор данных содержит все соответствующие данные, и я выполняю RowFilter, чтобы получить подмножество данных, необходимых для диаграммы района.

Проблема, с которой я сталкиваюсь, заключается в том, что при создании диаграмм регионов (количество диаграмм может быть от 1 до 20, поскольку они суммируют итоги по районам), диаграммы отображают правильное количество раз, но все диаграммы отображают данные из последнего Фильтр строк.

Помимо основного отчета, я пробовал комбинации событий Format и ReportStart. Я прошел через код, и RowFilter выполняется для каждого PanelNumber.

Код ниже....

Основной отчет

Private Sub grpRegionFooter_Format(sender As System.Object, e As System.EventArgs) Handles grpRegionFooter.Format
    Dim rpt As New rptDetailExpRegion_Graph
    Dim iWhere As String = txtRegion.Value.ToString.Trim
    Dim WhereClause As String = "Region = " + iWhere.Trim
    SubReport2.Report = rpt
    rpt.DataTable = dsGraphData.Tables(2)
    rpt.Where = WhereClause
    rpt.Text = txtRegion.Text
End Sub

Подотчет 1 (rptDetailExpRegion_Graph)

Private Sub rptDetailExpRegion_Graph_ReportStart(sender As Object, e As System.EventArgs) Handles Me.ReportStart
    Dim Panels As DataTable
    Dim DR As DataRow
    Dim WhereClause As String = Where
    Panels = DS.DefaultView.ToTable(True, "PanelNumber")
    Panels.DefaultView.Sort = "PanelNumber"


    For Each DR In Panels.Rows
        Dim rpt As New rptDetailExpRegion_Graph2
        WhereClause = Where + " AND PanelNumber = " + DR.Item(0).ToString
        srRegionGraphs.Report = rpt
        rpt.Where = WhereClause

        DS.DefaultView.RowFilter = WhereClause
        rpt.DataSource = DS.DefaultView

        rpt.DataSource = DS.DefaultView
        rpt.DataTable = DS

    Next
End Sub

Подотчет 2 — содержит график (rptDetailExpRegion_Graph2)

Private Sub GroupHeader1_Format_1(sender As System.Object, e As System.EventArgs) Handles GroupHeader1.Format
    Dim WhereClause As String
    WhereClause = "Region = " + txtRegion.Text + " and PanelNumber = " + txtPanelNumber.Text
    ds1 = New DataView(DS, WhereClause, "Region", DataViewRowState.CurrentRows)
    srRegionGraphs.DataSource = ds1
End Sub

person larryr    schedule 29.04.2013    source источник


Ответы (1)


В коде, который вы разместили для *SubReport 1 (rptDetailExpRegion_Graph)*, вы перебираете строки DataTable и повторно устанавливаете поля DataSource/DataTable подотчета. Поскольку событие запуска отчета возникает только один раз, прежде чем отчет начнет обработку, только в последний раз будет использоваться DataSource.

Если я правильно понимаю, что вы пытаетесь сделать, лучший способ сделать это — установить источник данных родительского отчета на весь набор данных Panel. Таким образом, раздел сведений для родительского отчета будет повторяться для каждой панели. В разделе «Подробности» вы можете поместить вложенный отчет с диаграммами или вы можете поместить диаграммы непосредственно в этот раздел деталей и повторно привязать каждую отдельную диаграмму на основе текущей панели.

Ознакомьтесь с пошаговым руководством по вложенным отчетам с источниками данных во время выполнения. Обратите особое внимание на изменение предложения Where вложенного отчета в событии Format раздела Detail (разверните заголовок Добавить код для назначения источника данных для дочернего отчета (rptSub)). Фильтрация данных вложенного отчета выполняется в событии формата раздела сведений, поскольку это событие возникает для каждой записи в родительском отчете. Если бы эта фильтрация была выполнена в событии ReportStart, она бы не работала, поскольку применялась бы только одна фильтрация.

person Scott Willeke    schedule 29.04.2013