我有一份包含 3 个数据集的报告。
DS1 – 上个月的地区编号、地区名称/编号、测试名称、测试计数、测试费用
DS2 – Region Number District Number, Test Number, MMYYYY, Test Count, Test Charge for last year,按 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 事件的组合。我已经逐步完成了代码,并为每个 PanelNumber 执行了 RowFilter。
代码如下......
主要报告
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
SubReport 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