У меня есть отчет с 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