'''
Dim dt1 As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker1")
Dim dt As DataTable
Dim dtb As New DataTableBuilder("织造产量统计")
dtb.AddDef("姓名", Gettype(String), 16)
dtb.AddDef("机台", Gettype(String), 16)
dtb.AddDef("重量", Gettype(Double))
dt = dtb.Build()
'开始逐行累加统计
Dim lst As New Dictionary(of String ,DataRow) '定义一个字典,用于检索每个员工在统计表中对应的行
For Each dr1 As DataRow In DataTables("织造产量表").sqlSelect("[织造日期] = '" & dt1.value & "'")
If dr1 IsNot Nothing AndAlso dr1.IsNull("织造人员") = False AndAlso 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 nm1() As String = nm.replace("-","'-'").split("-")
nm1(0) = nm1(0).trim("'")
nm1(1) = nm1(1).trim("'")
Dim v As Double = val(nm1(1))
Dim dr2 As DataRow
Dim key As String = nm1(0) & "|" & dr1("机台编号") '这里是关键,由工号和产品组成字典的关键词.
If lst.ContainsKey(key) '如果集合中包括此姓名对应的行
dr2= lst(key) '将此行赋值给变量dr2
Else
dr2 = dt.AddNew() '否则增加一行.
dr2("姓名") = nm1(0) '新增行的姓名列设置为此姓名
dr2("机台") = dr1("机台编号")
lst.add(key,dr2) '将新增行添加到字典中,以便接下来检索
End If
dr2("重量") = dr2("重量") + v '加上姓名"-"后的重量
Next
End If
Next
Tables("织造产量表_Table2").DataSource = dt
Tables("织造产量表_Table2").AutoSizeCols