以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]代码报错,生成的统计表也不对 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=128752) |
-- 作者:xndd -- 发布时间:2018/12/14 11:06:00 -- [求助]代码报错,生成的统计表也不对 甜版好! 我创建了一张表,然后给这张表里面填充数据,结果数据填充的不对,麻烦看看,谢谢 我做到了一个函数里面,总是报错 代码: \'生产计划金额累计 \'取出 Dim dr1 As DataRow Dim jhje As Double dr1 = DataTables("计划表").Find("[部门] = \'ORG1011\' and [年份] = \'2018\' and [月份] = \'11\'") If dr1 IsNot Nothing Then jhje = dr1("计划金额") Else jhje = 1 End If Dim jelist As New List(Of String) \'返回指定月份的天数 Dim tianshu As Integer = Date.DaysInMonth(Year(Date.Today),11) Dim pgje As Double = jhje / tianshu \'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\' \'生成临时表 Dim dtb As New DataTableBuilder("总统计表") dtb.AddDef("日期", Gettype(String), 32) dtb.AddDef("计划金额累计", Gettype(String), 32) dtb.AddDef("实际金额累计", Gettype(String), 32) dtb.Build() \'添加数据 Dim jj As Integer Dim zhrq As String Dim t As Table = Tables("表B") For jj = 1 To tianshu Dim dr3 As DataRow = DataTables("总统计表").AddNew() zhrq = Cstr(Year(Date.Today)) + "-11-" + Cstr(jj) dr3("日期") = zhrq dr3("计划金额累计") = Cstr(pgje*jj) For Each r As Row In t.Rows If CDate(r("日期")) = CDate(zhrq) Then dr3("实际金额累计") = r("实际金额累计") Else dr3("实际金额累计") = Cstr(pgje*jj) End If Next Next DataTables("总统计表").Save() \'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\' \'make json Dim Arys1 As List(Of String()) Dim Arys2 As List(Of String()) Dim tjb As Table = Tables("总统计表") Arys1 = tjb.DataTable.GetValues("日期|计划金额累计","","日期") Arys1 = tjb.DataTable.GetValues("日期|实际金额累计","","日期") Dim salesdata As New JObject Dim xmlb As New JArray Dim i As Integer salesdata("xsjh") = xmlb For Each Ary1 As String() In Arys1 xmlb.Add(New Jobject) xmlb(i)("month") = Ary1(0).ToString xmlb(i)("num") = Ary1(1).ToString i += 1 Next Dim salesdata2 As New JObject Dim xmlb2 As New JArray Dim j As Integer j = 0 salesdata("sjxs") = xmlb2 For Each Ary2 As String() In Arys2 xmlb2.Add(New Jobject) xmlb2(j)("month") = Ary2(0).ToString xmlb2(j)("num") = Ary2(1).ToString j += 1 Next FileSys.WriteAllText("d:\\data1.json",salesdata.ToString,False,Encoding.UTF8) [此贴子已经被作者于2018/12/14 11:06:57编辑过]
|
-- 作者:xndd -- 发布时间:2018/12/14 11:10:00 -- 计划金额累计 列的数据是取月份总数据 除以 当月天数 然后每天累计生成的 实际金额累计 列的数据是从数据库中取出,我这里放在表B里面的 现在要求就是每天都要有数据,如果实际金额累计没有数据,比如11-05没有数据,就要填充11-04的数据
|
-- 作者:xndd -- 发布时间:2018/12/14 12:24:00 -- Dim tjb As Table = Tables("总统计表") Arys1 = tjb.DataTable.GetValues("日期|计划金额累计","","日期") Arys2 = tjb.DataTable.GetValues("日期|实际金额累计","","日期") 报错问题找到 ,是 这里arys1重复了,但是 实际金额累计不对
|
-- 作者:有点甜 -- 发布时间:2018/12/14 12:43:00 -- 填入数据,参考下面,如果不正确,请说明哪里不正确。
\'生产计划金额累计 Dim jelist As New List(Of String)
\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\' \'添加数据 For jj = 1 To tianshu exit for |
-- 作者:xndd -- 发布时间:2018/12/14 13:31:00 -- 老大! 我改成这样: \'添加数据 Dim jj As Integer Dim zhrq As String Dim t As Table = Tables("表B") \'定义一个变量,用于存储前一天的实际金额累计值 Dim bfsjje As Double For jj = 1 To tianshu Dim dr3 As DataRow = DataTables("总统计表").AddNew() zhrq = Cstr(Year(Date.Today)) + "-11-" + Cstr(jj) dr3("日期") = zhrq dr3("计划金额累计") = Cstr(pgje*jj) For Each r As Row In t.Rows If Datediff("d",CDate(r("日期")),CDate(zhrq)) = 0 Then dr3("实际金额累计") = r("实际金额累计") bfsjje = r("实际金额累计") Exit For Else dr3("实际金额累计") = bfsjje End If Next Next DataTables("总统计表").Save() 这样,生成的总统计表正确了,但是我是用了字符型存储日期列的,因此排序出了问题,在生成临时表的时候,能够用日期列存储进去吗?谢谢
|
-- 作者:xndd -- 发布时间:2018/12/14 13:35:00 -- 我改成dtb.AddDef("日期", Gettype(Date)) 可以了 基础不牢靠!
|
-- 作者:有点甜 -- 发布时间:2018/12/14 13:41:00 -- 以下是引用xndd在2018/12/14 13:31:00的发言:
这样,生成的总统计表正确了,但是我是用了字符型存储日期列的,因此排序出了问题,在生成临时表的时候,能够用日期列存储进去吗?谢谢
可以的。生成的时候,直接生成日期列即可。 |
-- 作者:xndd -- 发布时间:2018/12/14 13:50:00 -- 问题是,如果是日期列,会带有后面的00:00:00啊,不要时分秒怎么办? { "xsjh": [ { "month": "2018-11-01 00:00:00", "num": "396664.666666667" }, { "month": "2018-11-02 00:00:00", "num": "793329.333333333" },
|
-- 作者:xndd -- 发布时间:2018/12/14 14:29:00 -- 我在获取时,用字符串截断处理了,但是数值不知道怎么处理 xmlb(i)("month") = Ary1(0).ToString().SubString(0,10) |
-- 作者:有点甜 -- 发布时间:2018/12/14 14:52:00 -- 以下是引用xndd在2018/12/14 14:29:00的发言:
我在获取时,用字符串截断处理了,但是数值不知道怎么处理 xmlb(i)("month") = Ary1(0).ToString().SubString(0,10)
参考
xmlb(i)("month") = Ary1(0).Split(" ")(0)
xmlb(i)("num") = format(val(Ary1(1)), "0.00")
|