以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 用Chart来按本周统计数据显示图,本周不是对应的周一到周日,且号数也不对,怎么修正呢? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=172957) |
-- 作者:cnsjroom -- 发布时间:2021/11/9 8:46:00 -- 用Chart来按本周统计数据显示图,本周不是对应的周一到周日,且号数也不对,怎么修正呢? 按本周统计数据,本周不是对应的周一到周日,且号数也不对,怎么修正呢?麻烦老师们帮忙看看 谢谢! 当前数据汇总表结果如下:上周的号数为1.2.3.4.5.6.7 是周一到周日 8.9是这周号数 结果数据中显示的这周是从7.8开始了 对应想按照每个周对应的号数 显示周一到周日的数据 结果一直都只显示了1.2.3.4.5.6.7号数数据 没有对应更换为当前系统的本周 8.9.10.11.12.13.14号数 当前按周生成表代码如下: Dim d1 As Date = Date.Today Dim d2 As Date = new Date(d1.year,1,1) Dim d3 As Date =New Date(d1.year, 12, 31) Output.show(format(d1,"yyyy") & "年第" & DateDiff("ww",d2,d1) +1 & "周") Dim ii As Integer= DateDiff("ww",d2,d1)+1 Dim Chart As WinForm.Chart \'定义一个图表变量 Dim Series As WinForm.ChartSeries \'定义一个图系变量 Dim tbl As DataTable = DataTables("汇总统计") \'定义一个变量tbl引用数据表 Dim lst As List(Of String) = tbl.GetValues("日","年=\'" & Date.today.Year & "\' and [周] = \'" & ii & "\'") \'获得产品名称集合 Chart = e.Form.Controls("Chart5") \' 引用窗口中的图表 Chart.SeriesList.Clear() \'清除图表原来的图系 Series = Chart.SeriesList.Add() \'增加一个图系 Series.Length =7 \'设置图系的长度 Series.DataLabelText = "{#YVAL}" For i As Integer = 0 To 6 \'指定每个数据点的位置 Series.X(i) = i \'指定水平坐标 Dim m As Double = tbl.Compute("Sum(收款)","[日] = " & (i+1)) Series.Y(i) = m \'指定垂直坐标 Chart.AxisX.SetValueLabel(i,(i+1)& "日")\'指定字符表示 Next Chart.AxisX.AnnoWithLabels = True \'启用字符标示 |
-- 作者:有点蓝 -- 发布时间:2021/11/9 9:17:00 -- 参考这里的方法计算指定周的开始和结束日期:http://foxtable.com/bbs/dispbbs.asp?boardid=2&Id=96654 然后根据开始和结束日期进行统计: dim dd as date = 上面方法计算的指定周的第一天 For i As Integer = 0 To 6 \'指定每个数据点的位置 Series.X(i) = i \'指定水平坐标 Dim m As Double = tbl.Compute("Sum(收款)","[日] = " & dd.adddays(i).day) Series.Y(i) = m \'指定垂直坐标 Chart.AxisX.SetValueLabel(i,dd.adddays(i).day & "日")\'指定字符表示 Next |
-- 作者:cnsjroom -- 发布时间:2021/11/9 23:05:00 -- 回复:(有点蓝)参考这里的方法计算指定周的开始和结... 参考老师指引 当前代码如下: Dim d As Date = new Date(Date.Today.Year, 1, 1) Dim w = d.DayOfWeek Dim startdate As Date Dim Enddate As Date Dim d1 As Date =Date.Today Dim d2 As Date = new Date(d1.year,1,1) Dim d3 As Date =New Date(d1.year, 12, 31) Output.show(format(d1,"yyyy") & "年第" & DateDiff("ww",d2,d1) +1 & "周") Dim ii As Integer= DateDiff("ww",d2,d1)+1 startdate = d.AddDays(8-w).AddDays(7*(val(ii)-2)) Enddate = startdate.AddDays(6) Dim Chart As WinForm.Chart \'定义一个图表变量 Dim Series As WinForm.ChartSeries \'定义一个图系变量 Dim tbl As DataTable = DataTables("汇总统计") \'定义一个变量tbl引用数据表 Dim lst As List(Of String) = tbl.GetValues("日","年=\'" & Date.today.Year & "\' and [周] = \'" & ii & "\'") \'获得产品名称集合 Chart = e.Form.Controls("Chart5") \' 引用窗口中的图表 Chart.SeriesList.Clear() \'清除图表原来的图系 Series = Chart.SeriesList.Add() \'增加一个图系 Series.Length =7 \'设置图系的长度 Series.DataLabelText = "{#YVAL}" \'msgbox(startdate & "-" & Enddate ) Dim dd As Integer= startdate.Day For i As Integer = 0 To 6 \'指定每个数据点的位置 Series.X(i) = i \'指定水平坐标 Dim m As Double = tbl.Compute("Sum(收款)","[日] = " & dd+i) Series.Y(i) = m \'指定垂直坐标 Chart.AxisX.SetValueLabel(i,dd+i & "日")\'指定字符表示 Next Chart.AxisX.AnnoWithLabels = True \'启用字符标示 初步实现数据可以按照预期显示周一到周日 上述代码貌似有些没有和老师思路一致 老师是否可以指导下二楼方法呢?另外上述代码还有没有更为简便的写法呢? |
-- 作者:有点蓝 -- 发布时间:2021/11/9 23:20:00 -- 用的不就已经是2楼的方法了么.我也想不出其它方法了 |