-- 作者:李孝春
-- 发布时间:2015/5/11 10:06:00
-- 求助:一键查询表中的值,然后进行数据计算,但是计算了全部日期的?求解,因为派工单号是唯一的一个,想实现在这个派工单号下的所有派工人员的值不重复计算!
求助:一键查询表中的值,然后进行数据计算,但是计算了全部日期的?求解,因为派工单号是唯一的一个,想实现在这个派工单号下的所有派工人员的值不重复计算!
问题1:一键生成后,对应的派工时间全部为一致了?而实际查询统计表中的时间是分为三个时间段的,求纠正
问题2:一键生成后,名字对应重复,求纠正同一派工单号下,名字不重复值的计算,也就是派工人员只显示一个不重复值,提成比例显示为在这个派工单号下,这个名字重复的次数,比如丁国珍显示了三次,那提成比例为3.
此主题相关图片如下:222.png
此主题相关图片如下:333.png
一键生成代码如下:
Dim dt As DataTable Dim dtb As New DataTableBuilder("统计") dtb.AddDef("派工人员", Gettype(String), 16) dtb.AddDef("职务", Gettype(String), 16) dtb.AddDef("项目编号", Gettype(String), 16) dtb.AddDef("派工人数", Gettype(Double)) dtb.AddDef("派工时间", Gettype(Date)) dt = dtb.Build() \'开始逐行累加统计 Dim lst As New Dictionary(of String ,DataRow) \'定义一个字典,用于检索每个员工在统计表中对应的行 For Each dr1 As DataRow In DataTables("派工单").DataRows If dr1.IsNull("派工人员") = False Then \'如果工号列不为空 Dim nms() As String = dr1("派工人员").Split(",") \'将工号列内容拆分成数组 Dim v As Double = dr1("次数") / nms.Length \'获得平均之后每个工号的生产数量 For Each nm As String In nms \'遍历参与加工此产品的每个工号 Dim dr2 As DataRow Dim key As String = nm & "|" & dr1("派工单号") \'这里是关键,由工号和产品组成字典的关键词. If lst.ContainsKey(key) \'如果集合中包括此关键词对应的行 dr2= lst(key) \'将此行赋值给变量dr2 Else dr2 = dt.AddNew() \'否则增加一行. dr2("派工人员") = nm \'新增行的工号列设置为此工号 dr2("项目编号") = dr1("派工单号") \'设置增行的产品 dr2("派工时间") = dr1("派工时间") dr2("派工人数") = dr1("派工人数") lst.add(key,dr2) \'将新增行添加到字典中,以便接下来检索 End If Next End If Next
For i As Integer = 0 To DataTables("统计").DataRows.Count-1 Dim r As Row = Tables("客户信息.员工提成表").AddNew r("派工人员") = DataTables("统计").DataRows(i)("派工人员") r("计算日期") = Date.Today Next
|
-- 作者:李孝春
-- 发布时间:2015/5/11 10:23:00
-- 回复:(大红袍)?派工时间怎么算?多个时间怎么...
生成的统计名字查询表中的派工时间来自于派工单中的时间,在统计这个查询表中,时间能够和派工单表中的时间吻合
现在的问题是:统计表中的派工时间不能对应到利润提成中的派工时间,图中显示的是第一次派工时间 全部为一样了,期待实现的是。多个派工时间的话,则将派工时间显示为多值,如2015-04-16,2015-04-17,2015-04-18
不知道这个思路合理不,若不合理还请大红袍老师 指导一下
[此贴子已经被作者于2015/5/11 10:24:14编辑过]
|
-- 作者:大红袍
-- 发布时间:2015/5/11 10:43:00
--
Dim dt As DataTable Dim dtb As New DataTableBuilder("统计") dtb.AddDef("派工人员", Gettype(String), 16) dtb.AddDef("职务", Gettype(String), 16) dtb.AddDef("项目编号", Gettype(String), 16) dtb.AddDef("派工人数", Gettype(Double)) dtb.AddDef("派工时间", Gettype(Date)) dt = dtb.Build() \'开始逐行累加统计 \'Dim lst As New Dictionary(of String ,DataRow) \'定义一个字典,用于检索每个员工在统计表中对应的行 For Each dr1 As DataRow In DataTables("派工单").DataRows If dr1.IsNull("派工人员") = False Then \'如果工号列不为空 Dim nms() As String = dr1("派工人员").Split(",") \'将工号列内容拆分成数组 Dim v As Double = dr1("次数") / nms.Length \'获得平均之后每个工号的生产数量 For Each nm As String In nms \'遍历参与加工此产品的每个工号 Dim dr2 As DataRow \'Dim key As String = nm & "|" & dr1("派工单号") \'这里是关键,由工号和产品组成字典的关键词. \'If lst.ContainsKey(key) \'如果集合中包括此关键词对应的行 \' dr2= lst(key) \'将此行赋值给变量dr2 \'Else dr2 = dt.AddNew() \'否则增加一行. dr2("派工人员") = nm \'新增行的工号列设置为此工号 dr2("项目编号") = dr1("派工单号") \'设置增行的产品 dr2("派工时间") = dr1("派工时间") dr2("派工人数") = dr1("派工人数") \'lst.add(key,dr2) \'将新增行添加到字典中,以便接下来检索 \'End If Next End If Next
DataTables("员工提成表").DataRows.Clear For Each ary() As String In DataTables("统计").GetValues("项目编号|派工人员") Dim r As Row = Tables("员工提成表").AddNew r("项目编号") = ary(0) r("派工人员") = ary(1) Dim count As Integer = 0 Dim Dates As String = "" For Each dr As DataRow In DataTables("统计").Select("项目编号 = \'" & ary(0) & "\' and 派工人员 = \'" & ary(1) & "\'") count += 1 Dates &= dr("派工时间") & "," Next r("派工时间") = Dates.Trim(",") r("提成比例") = count Next
|