Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
就像图上的这样,今天的会根据昨天的数据自动生成!
如何能每天把前一天未完成的量(领取数量-完成数量-废品数量)算成今天的领取数量然后生成新的行,这里还有个问题就是遇到休息,下周来以后要提取的是上周最后一天的数据,我打算做个按钮实现这个功能,代码希望老爹提供下哈!
下载信息 [文件大小: 下载次数: ] | |
![]() |
要求是上一天所有部门的成员? 要区分产品批次、产品编号和加工工序? 还有上一天有很多行,今天也会有很多行,今天根据上一天来计算领取数量,今天所有行的领取数量都是上一天对应的(领取数量-完成量-废品量)。
DataRowAdding事件:
If e.DataTable.DataRows.Count = 0 Then '如果是一个空表
Return '那么返回
End If
Dim dr As DataRow = e.DataTable.DataRows(e.DataTable.DataRows.Count - 1) '获得最后一行
e.DataRow("领取数量") = dr("领取数量") - dr("完成数量") - dr("废品数量")
这样新增行,就会根据上一行计算出领取数量。
DataRowAdding事件:
If e.DataTable.DataRows.Count = 0 Then '如果是一个空表
Return '那么返回
End If
Dim dr As DataRow = e.DataTable.DataRows(e.DataTable.DataRows.Count - 1) '获得最后一行
e.DataRow("领取数量") = dr("领取数量") - dr("完成数量") - dr("废品数量")
这样新增行,就会根据上一行计算出领取数量。
这个可能我没用表达清楚,不单单是上一行,是对昨天所有的数据进行分析,所有部门的所有成员!
养成好习惯:
1、将自己做好的表传上来,否则人家要帮你,还得先建表,输入测试数据,毕竟没有人写代码是一气呵成,都需要调试。
2、表述清楚问题,单单是上一天所有部门的成员? 不要区分产品批次、产品编号和加工工序? 还有上一天有很多行,今天也会有很多行,今天根据上一天来计算领取数量,今天所有行的领取数量会一样?
最好用实例说明某一行正确的数据是什么,根据那几行的数据计算得出,规则是什么。
养成好习惯:
1、将自己做好的表传上来,否则人家要帮你,还得先建表,输入测试数据,毕竟没有人写代码是一气呵成,都需要调试。
2、表述清楚问题,单单是上一天所有部门的成员? 不要区分产品批次、产品编号和加工工序? 还有上一天有很多行,今天也会有很多行,今天根据上一天来计算领取数量,今天所有行的领取数量会一样?
最好用实例说明某一行正确的数据是什么,根据那几行的数据计算得出,规则是什么。
要求是上一天所有部门的成员? 要区分产品批次、产品编号和加工工序? 还有上一天有很多行,今天也会有很多行,今天根据上一天来计算领取数量,今天所有行的领取数量都是上一天对应的(领取数量-完成量-废品量)。
今天的数据都是根据昨天的完成量算出来的,例子如下:
cnc的张三昨天(5.30)领取了1105002这个批次的0212002200100000(产品编号)10个,结果他昨天完成了5个,干废了1个,那么今天生成以后的结果就5.31的第一行所示那样。
也就是按姓名、批次和产品编号来区分? 也就说新增一行后,输入日期、姓名、批次和产品编号四列的内容后,从上一天找出姓名、批次和产品编号相同的行,然后计算领取数量?
也就是按姓名、批次和产品编号来区分? 也就说新增一行后,输入日期、姓名、批次和产品编号四列的内容后,从上一天找出姓名、批次和产品编号相同的行,然后计算领取数量?
嗯嗯 就是这样 如果上一天的领取数量=完成数量+废品数量 则今天不用生成。
DataColChanged事件:
Select Case e.DataCol.Name
Case "员工","产品编号","产品批次","日期"
If e.DataRow.IsNull("日期") = False Then
Dim dt As Date = e.DataRow("日期")
Dim dr1 As DataRow = e.DataRow
Dim dr2 As DataRow
dt = dt.AddDays(-1) '求出上一天的日期
dr2 = e.DataTable.Find("日期 = #" & dt & "# And 产品编号 = '" & dr1("产品编号") & "' And 产品批次 = '" & dr1("产品批次") & "' And 员工 = '" & dr1("员工") & "'")
If dr2 IsNot Nothing Then
dr1("领取数量") = dr2("领取数量") - dr2("完成数量") - dr2("废品数量")
End If
End If
End Select
DataColChanged事件:
Select Case e.DataCol.Name
Case "员工","产品编号","产品批次","日期"
If e.DataRow.IsNull("日期") = False Then
Dim dt As Date = e.DataRow("日期")
Dim dr1 As DataRow = e.DataRow
Dim dr2 As DataRow
dt = dt.AddDays(-1) '求出上一天的日期
dr2 = e.DataTable.Find("日期 = #" & dt & "# And 产品编号 = '" & dr1("产品编号") & "' And 产品批次 = '" & dr1("产品批次") & "' And 员工 = '" & dr1("员工") & "'")
If dr2 IsNot Nothing Then
dr1("领取数量") = dr2("领取数量") - dr2("完成数量") - dr2("废品数量")
End If
End If
End Select
老爹,这个不管用,我做了个窗口,专门生成新的订单
生成订单按钮的代码如下,但是只能生成一行新的,怎么样才能把指定日期的所有订单全部检测后生成新的订单呢?
Dim r1 As Date = e.Form.Controls("r1").Value
Dim r2 As Date = e.Form.Controls("r2").Value
Dim dr1 As DataRow = DataTables("生产进度").Find("日期 = #" & r1 & "#")
Dim dr2 As DataRow
If dr1 IsNot Nothing Then
If dr1("领取数量") > dr1("完成数量") + dr1("废品数量") Then
dr2 = DataTables("生产进度").AddNew()
dr2("日期") = r2
dr2("员工") = dr1("员工")
dr2("部门") = dr1("部门")
dr2("产品批次") = dr1("产品批次")
dr2("产品编号") = dr1("产品编号")
dr2("加工工序") = dr1("加工工序")
dr2("领取数量") = dr1("领取数量") - dr1("完成数量") - dr1("废品数量")
End If
Else
MessageBox.Show("未发现该日订单,请核查!","温馨提示")
End If
DataTables("生产进度").Save()
e.Form.Close()
就应该这样提问,自己先写一下,否则别人不能理解你的意思
这样就可以多行了:
Dim r1 As Date = e.Form.Controls("r1").Value
Dim r2 As Date = e.Form.Controls("r2").Value
Dim drs As List(of DataRow) = DataTables("生产进度").Select("日期 = #" & r1 & "#")
Dim dr2 As DataRow
If drs.Count =0 Then
MessageBox.Show("未发现该日订单,请核查!","温馨提示")
Else
For Each dr1 As DataRow In drs
If dr1("领取数量") > dr1("完成数量") + dr1("废品数量") Then
dr2 = DataTables("生产进度").AddNew()
dr2("日期") = r2
dr2("员工") = dr1("员工")
dr2("部门") = dr1("部门")
dr2("产品批次") = dr1("产品批次")
dr2("产品编号") = dr1("产品编号")
dr2("加工工序") = dr1("加工工序")
dr2("领取数量") = dr1("领取数量") - dr1("完成数量") - dr1("废品数量")
End If
Next
End If