以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]关于订单数量平均投产后统计的方法 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=87482) |
||||
-- 作者:2900819580 -- 发布时间:2016/7/12 16:29:00 -- [求助]关于订单数量平均投产后统计的方法 如图所示,订单一共有300个,需要分三天生产,每天生产100.,,,另一张订单数量400,需要分四天生产,每天生产100.需要统计得到第一天到第三天是200.第四天是100.并用图表方式表示出来。 右侧的表是统计表,现在是按计划开始日期来统计的,但9日实际上也是有需要生产的。
[此贴子已经被作者于2016/7/12 16:30:31编辑过]
|
||||
-- 作者:大红袍 -- 发布时间:2016/7/12 16:35:00 -- 项目上传上来测试。 |
||||
-- 作者:2900819580 -- 发布时间:2016/7/12 17:04:00 --
请查看,谢谢 |
||||
-- 作者:大红袍 -- 发布时间:2016/7/12 18:04:00 -- 没理解你逻辑
|
||||
-- 作者:2900819580 -- 发布时间:2016/7/12 20:29:00 -- 谢谢大红袍老师,这正是我想要的,但有小部分需要修改,修改后代码如下,希望对大家有用。 Dim dt1 As DataTable = DataTables("计划表_Smt统计表") Dim dt As DataTable = DataTables("订单明细跟踪表") Dim mind As Date = dt.Compute("min(SMT_开始生产_计划)", "") Dim maxd As Date = dt.Compute("max(SMT_完成生产_计划)", "") dt1.DeleteFor("") Do While mind <= maxd Dim nr As DataRow = dt1.AddNew nr("日期") = mind Dim sum As Double = 0 For Each dr As DataRow In dt.Select("SMT_开始生产_计划 <= #" & mind & "# and SMT_完成生产_计划 >= #" & mind & "#") Dim sp1 As TimeSpan = dr("SMT_完成生产_计划") - dr("SMT_开始生产_计划") Dim D1 As Integer = sp1.Days +1 sum += dr("SMT_欠数") /d1 \'Dim sp2 As TimeSpan = cdate(dr("SMT_完成生产_计划")) - mind \'sum += dr("SMT_欠数") * (sp2.TotalDays / sp1.TotalDays) Next nr("欠数") = sum mind = mind.AddDays(1) Loop Dim Chart As WinForm.Chart \'定义一个图表变量 Dim Series As WinForm.ChartSeries \'定义一个图系变量 Dim t As Table = Tables("计划表_Smt统计表") \'定义一个变量t引用数据表 Chart= e.Form.Controls("ChartSmt") \' 引用窗口中的图表 Chart.SeriesList.Clear() \'清除图表原来的图系 \'Chart.AxisX.Min=0 \'Chart.AxisX.Max = 31 \'Chart.AxisX.Major=1 chart.AxisX.ClearValueLabel \'Chart.Axisy.Min=100 \'Chart.Axisy.Max = 1000 \'Chart.Axisy.Major=100 Chart.ChartType = ChartTypeEnum.Bar Series = Chart.SeriesList.Add() \'增加一个图系 Series.Length = t.Rows.Count \'图系的数据点数等于表的行数 For i As Integer = 0 To t.Rows.Count - 1 \'指定每个数据点的位置 Series.X(i) = i \'指定水平坐标 Series.Y(i) = t.Rows(i)("欠数") \'指定垂直坐标 Chart.AxisX.SetValueLabel(i, format(t.Rows(i)("日期"), "dd")) \'指定字符表示 Next Chart.AxisX.AnnoWithLabels = True \'启用字符标示 Series.DataLabelText = "{#YVAL}" series.DataLabelCompass = LabelCompassEnum.North |