请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

gudaicike

注册会员

1

主题

3

帖子

51

积分

注册会员

积分
51
最新发帖
gudaicike
注册会员   /  发表于:2016-10-14 18:10  /   查看:3182  /  回复:5
本帖最后由 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控件的区域图表报表中,这个是怎么绑定的?

在此请教各位大神!


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

5 个回复

倒序浏览
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-10-17 11:47:53
沙发
》》》1,右边的Y轴我没有调试出来
右边Y轴是在“定制”对话框,设置“坐标轴” -> Axis Y2->在里面指定数据字段


》》》2Y轴的最大值比如1000,是怎么设定的。可不可以计算式动态设定?
在对话框中,选择“Axis Y”,在这个里面指定,也可以通过代码: this.chartControl1.ChartAreas[0].Axes[0].Labels.AddRange();

》》》3,现在是在报表的明细部开发,使用Chart控件。上述的四列数值怎么和存储过程的结果集对应字段绑定上?


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
gudaicike
注册会员   /  发表于:2016-10-17 14:53:27
板凳
本帖最后由 gudaicike 于 2016-10-17 14:55 编辑

《《《 2,this.chartControl1.ChartAreas[0].Axes[0].Labels.AddRange();应该写到那个事件中?ActiveReport_ReportStart事件中吗?
《《《 3,上述绑定数据,是说存储过程取得的结果集中的字段名称直接写进去就可以吗?如果需要先进行计算再显示,需要通过后台写代码计算,然后再绑定?
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-10-17 15:13:06
地板
gudaicike 发表于 2016-10-17 14:53
《《《 2,this.chartControl1.ChartAreas[0].Axes[0].Labels.AddRange();应该写到那个事件中?ActiveRepor ...

抱歉上边未说清楚
》》》2. 添加到ReportStart  事件中
》》》3. 实现核心: 指定轴的字段名称; 在后台代码中无论如何计算,图表会根据字段名来寻找对应的字段值。
回复 使用道具 举报
gudaicike
注册会员   /  发表于:2016-10-17 15:23:07
5#
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
6#
本帖最后由 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():
  1. 'create the series
  2. Dim series As New GrapeCity.ActiveReports.Chart.Series
  3. series.Type = Chart.ChartType.Bar3D
  4.         
  5. 'connection string and data adapter
  6. Dim dbPath As String = "C:\\Documents and Settings\\YourUserName\\My Documents\\GrapeCity\\ActiveReports 10\\Samples\\Data\\NWIND.MDB"
  7. Dim connString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + dbPath"
  8. Dim da As New System.Data.OleDb.OleDbDataAdapter("SELECT * from Orders WHERE OrderDate < #08/17/1994#", connString)

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

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

  17. 'angle the labels to avoid overlapping
  18. Me.ChartControl1.ChartAreas(0).Axes(0).LabelFont.Angle = 45
复制代码


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部