有以下统计表代码,关于效率问题,麻烦问一下老师是否有改进的的方法或者思路?
因为同时需要生成的统计表比较多,整体上感觉特慢。
'左边图表1
If FrWidth >= 1600 Then
'业务统计图表数据生成
Dim g As New SQLGroupTableBuilder("日常业务按年统计", "任务指派")
g.C
g.Filter = "申报期_年 > 2017"
g.Groups.AddDef("申报期_年", "年份")
g.Totals.AddDef("业务编号", AggregateEnum.Count, "业务量")
g.Build()
If DataTables.Contains("日常业务按年统计") = True Then
Dim sum As Integer = DataTables("日常业务按年统计").Compute("sum(业务量)")
Dim n As Integer = DataTables("日常业务按年统计").DataRows.Count
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Chart = fr.Controls("Chart1") ' 引用窗口中的图表
'Chart.ChartType = ChartTypeEnum.Bar '设置图表类型为柱状
Chart.ChartType = ChartTypeEnum.XYPlot '设置图表类型为折线
Chart.VisualEffect = True '改变样式
Chart.DataSource = "日常业务按年统计" '设置绑定表
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.AxisX.GridMajorVisible = False '不显示网格线
Chart.AxisY.GridMajorVisible = False '不显示网格线
Chart.AxisY.Min = 0 '指定Y轴的最小值
Chart.AxisX.Text = "年份(共" & n & "年)"
Chart.AxisY.Text = "业务量" & vbcrlf & "(" & sum & ")"
Series = Chart.SeriesList.Add() '增加一个图系
Series.X.DataField = "年份" 'X轴绑定到月份列
Series.Y.DataField = "业务量" 'Y轴绑定到数量列
Series.DataLabelText = "{#YVAL}"
End If
End If
老师,我改用异步函数能够分别生成统计表了,麻烦问一下图表如何调用Build(True)生成的统计表数据?
这两种方法都不能用,因为异步生成的统计表不显示,请老师帮忙!
帮助中:
要在异步函数中正常使用这四个类,必须将Build方法的可选参数设置为True,这样生成的表就不会出现在主界面中,例如:
Dim g As New SQLGroupTableBuilder("统计表1", "订单")
g.Groups.AddDef("日期", DateGroupEnum.Quarter, "季")
g.Totals.AddDef("数量")
Dim dt As DataTable = g.Build(True) ' 一定要将参数设置为True
[此贴子已经被作者于2024/5/6 14:52:16编辑过]
建一个全局变量,异步列里调用同步把生成的统计表赋值给全局变量
老师按照指点修改后执行代码不报错了,但是绑定表不执行(红色代码分别测试后不行),不知什么原因?
'统计生成
Dim g As New SQLGroupTableBuilder("日常业务按年统计", "任务指派")
g.C
g.Filter = "申报期_年 > 2017"
g.Groups.AddDef("申报期_年", "年份")
g.Totals.AddDef("业务编号", AggregateEnum.Count, "业务量")
_TJtable1 = g.Build(True)
Functions.BeginSyncExecute("主页数据刷新_左边图表1")
'主页数据刷新_左边图表1函数
Dim n As Integer = _TJtable1.DataRows.Count
If n > 0 Then
Dim sum As Integer = _TJtable1.Compute("sum(业务量)")
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Chart = fr.Controls("Chart1") ' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.XYPlot '设置图表类型为折线
Chart.VisualEffect = True '改变样式
Chart.DataSource = "日常业务按年统计" '设置绑定表
Chart.DataSource = _TJtable1.name '设置绑定表
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.AxisX.GridMajorVisible = False '不显示网格线
Chart.AxisY.GridMajorVisible = False '不显示网格线
Chart.AxisY.Min = 0 '指定Y轴的最小值
Chart.AxisX.Text = "年份(共" & n & "年)"
Chart.AxisY.Text = "业务量" & vbcrlf & "(" & sum & ")"
Series = Chart.SeriesList.Add() '增加一个图系
Series.X.DataField = "年份" 'X轴绑定到月份列
Series.Y.DataField = "业务量" 'Y轴绑定到数量列
Series.DataLabelText = "{#YVAL}"
End If
[此贴子已经被作者于2024/5/6 15:22:30编辑过]
'统计生成
Dim g As New SQLGroupTableBuilder("日常业务按年统计", "任务指派")
g.C
g.Filter = "申报期_年 > 2017"
g.Groups.AddDef("申报期_年", "年份")
g.Totals.AddDef("业务编号", AggregateEnum.Count, "业务量")
dim dt as datatable = g.Build(True)
Functions.BeginSyncExecute("主页数据刷新_左边图表1",dt )
'主页数据刷新_左边图表1函数
_TJtable1 = args(0)
Dim n As Integer = _TJtable1.DataRows.Count
If n > 0 Then
Dim sum As Integer = _TJtable1.Compute("sum(业务量)")
……
Chart.VisualEffect = True '改变样式
Chart.DataTable =_TJtable1 '设置绑定表
Chart.SeriesList.Clear() '清除图表原来的图系
……
[此贴子已经被作者于2024/5/6 15:37:03编辑过]
合适了,谢谢老师!
问题出在:
Chart.DataSource = _TJtable1.name '设置绑定表(显示的表)
Chart.DataTable =_TJtable1 '设置绑定表(内存中的表)
[此贴子已经被作者于2024/5/6 17:22:31编辑过]