gudaicike 发表于 2016-10-14 18:10:10

存储过程获得DataTable返回值怎样绑定到区域图表报表

本帖最后由 Lenka.Guo 于 2016-10-17 10:58 编辑

我用的软件是ActiveReports for .NET 9.0 日文版,1,现在需要将程序代码中存储过程获得的DataTable结果
绑定到区域图表报表中。我用的是Chart控件。


其中的X 轴 ,Y轴,以及右侧系列值是怎么绑定的?其中红色箭头标注的是账票传参部分。之前我比较熟悉的是,后台存储过程执行完成后返回DataTable,我在账票开发过程中,使用TextBox控件,在此控件的DataField栏写入我需要的字段,这样就能拿到数值。
上述贴图中使用的是Chart控件,现在有四列需要显示,其中两列柱形,两列折线。同时要求双Y轴。X轴是要显示12个月份。存储过程结果集中有12个字段代表月份,与X轴12个月份对应。
我的问题是:
1,右边的Y轴我没有调试出来
2,Y轴的最大值比如1000,是怎么设定的。可不可以计算式动态设定?
3,现在是在报表的明细部开发,使用Chart控件。上述的四列数值怎么和存储过程的结果集对应字段绑定上?
是在报表的开发页面,右侧Chart控件区域绑定的吗?如果有Chart控件和存储过程返回结果集的配合使用资料,能提供一些吗?




2,在另一个业务处理中需要将多个存储过程返回的多个DataTable
绑定到包含subreport控件的区域图表报表中,这个是怎么绑定的?

在此请教各位大神!


Lenka.Guo 发表于 2016-10-17 11:47:53

》》》1,右边的Y轴我没有调试出来
右边Y轴是在“定制”对话框,设置“坐标轴” -> Axis Y2->在里面指定数据字段


》》》2,Y轴的最大值比如1000,是怎么设定的。可不可以计算式动态设定?在对话框中,选择“Axis Y”,在这个里面指定,也可以通过代码: this.chartControl1.ChartAreas.Axes.Labels.AddRange();
》》》3,现在是在报表的明细部开发,使用Chart控件。上述的四列数值怎么和存储过程的结果集对应字段绑定上?

无论是哪种控件的运行时绑定数据源,都需要在报表设计时,为每一个需要绑定,指定数据字段的名称; 指定完成之后,在后台通过数据集查询的DataTable后,将指定图表的DataSource属性。可以参考文档“http://www.gcpowertools.com.cn/docs/ActiveReports/AR9Guide/#!Documents/_348.htm”

gudaicike 发表于 2016-10-17 14:53:27

本帖最后由 gudaicike 于 2016-10-17 14:55 编辑

《《《 2,this.chartControl1.ChartAreas.Axes.Labels.AddRange();应该写到那个事件中?ActiveReport_ReportStart事件中吗?
《《《 3,上述绑定数据,是说存储过程取得的结果集中的字段名称直接写进去就可以吗?如果需要先进行计算再显示,需要通过后台写代码计算,然后再绑定?

Lenka.Guo 发表于 2016-10-17 15:13:06

gudaicike 发表于 2016-10-17 14:53
《《《 2,this.chartControl1.ChartAreas.Axes.Labels.AddRange();应该写到那个事件中?ActiveRepor ...
抱歉上边未说清楚
》》》2. 添加到ReportStart事件中
》》》3. 实现核心: 指定轴的字段名称; 在后台代码中无论如何计算,图表会根据字段名来寻找对应的字段值。

gudaicike 发表于 2016-10-17 15:23:07

Sub ActiveReport_ReportStart()
        this.chartControl1.ChartAreas[0.Axes[0.Labels.AddRange()
End Sub

这样之后会报一个错:'this' is not declared. It may be inaccessible due to its protection level.

Lenka.Guo 发表于 2016-10-17 16:11:25

本帖最后由 Lenka.Guo 于 2016-10-17 16:12 编辑

gudaicike 发表于 2016-10-17 15:23
Sub ActiveReport_ReportStart()
      this.chartControl1.ChartAreas[0.Axes[0.Labels.AddRange()
End Sub

VB 代码请参考Me.ChartControl1.ChartAreas(0).Labels.AddRange():'create the series
Dim series As New GrapeCity.ActiveReports.Chart.Series
series.Type = Chart.ChartType.Bar3D
      
'connection string and data adapter
Dim dbPath As String = "C:\\Documents and Settings\\YourUserName\\My Documents\\GrapeCity\\ActiveReports 10\\Samples\\Data\\NWIND.MDB"
Dim connString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + dbPath"
Dim da As New System.Data.OleDb.OleDbDataAdapter("SELECT * from Orders WHERE OrderDate < #08/17/1994#", connString)

'create the dataset
Dim ds As New DataSet
da.Fill(ds, "Orders")

'set chart properties
Me.ChartControl1.DataSource = ds
Me.ChartControl1.Series.Add(series)
Me.ChartControl1.Series(0).ValueMembersY = ds.Tables("Orders").Columns(7).ColumnName
Me.ChartControl1.Series(0).ValueMemberX = ds.Tables("Orders").Columns(8).ColumnName

'angle the labels to avoid overlapping
Me.ChartControl1.ChartAreas(0).Axes(0).LabelFont.Angle = 45

页: [1]
查看完整版本: 存储过程获得DataTable返回值怎样绑定到区域图表报表