Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共11 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:老爹看下这个代码怎么写?(已解决)

1楼
YDS 发表于:2011/5/30 11:29:00

 
图片点击可在新窗口打开查看此主题相关图片如下:001.jpg
图片点击可在新窗口打开查看

 

就像图上的这样,今天的会根据昨天的数据自动生成!

如何能每天把前一天未完成的量(领取数量-完成数量-废品数量)算成今天的领取数量然后生成新的行,这里还有个问题就是遇到休息,下周来以后要提取的是上周最后一天的数据,我打算做个按钮实现这个功能,代码希望老爹提供下哈! 

 

 

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2_0531.zip

 

要求是上一天所有部门的成员? 要区分产品批次、产品编号和加工工序? 还有上一天有很多行,今天也会有很多行,今天根据上一天来计算领取数量,今天所有行的领取数量都是上一天对应的(领取数量-完成量-废品量)。

[此贴子已经被作者于2011-6-13 8:37:00编辑过]
2楼
狐狸爸爸 发表于:2011/5/30 11:49:00

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("废品数量")

 

这样新增行,就会根据上一行计算出领取数量。

3楼
YDS 发表于:2011/5/30 11:55:00
以下是引用狐狸爸爸在2011-5-30 11:49:00的发言:

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("废品数量")

 

这样新增行,就会根据上一行计算出领取数量。

 

这个可能我没用表达清楚,不单单是上一行,是对昨天所有的数据进行分析,所有部门的所有成员!

4楼
狐狸爸爸 发表于:2011/5/30 12:09:00

养成好习惯:

 

1、将自己做好的表传上来,否则人家要帮你,还得先建表,输入测试数据,毕竟没有人写代码是一气呵成,都需要调试。

2、表述清楚问题,单单是上一天所有部门的成员? 不要区分产品批次、产品编号和加工工序? 还有上一天有很多行,今天也会有很多行,今天根据上一天来计算领取数量,今天所有行的领取数量会一样?

最好用实例说明某一行正确的数据是什么,根据那几行的数据计算得出,规则是什么。

 

[此贴子已经被作者于2011-5-30 12:09:27编辑过]
5楼
YDS 发表于:2011/5/31 8:28:00
以下是引用狐狸爸爸在2011-5-30 12:09:00的发言:

养成好习惯:

 

1、将自己做好的表传上来,否则人家要帮你,还得先建表,输入测试数据,毕竟没有人写代码是一气呵成,都需要调试。

2、表述清楚问题,单单是上一天所有部门的成员? 不要区分产品批次、产品编号和加工工序? 还有上一天有很多行,今天也会有很多行,今天根据上一天来计算领取数量,今天所有行的领取数量会一样?

最好用实例说明某一行正确的数据是什么,根据那几行的数据计算得出,规则是什么。

 

要求是上一天所有部门的成员? 要区分产品批次、产品编号和加工工序? 还有上一天有很多行,今天也会有很多行,今天根据上一天来计算领取数量,今天所有行的领取数量都是上一天对应的(领取数量-完成量-废品量)。

 

今天的数据都是根据昨天的完成量算出来的,例子如下:

 

cnc的张三昨天(5.30)领取了1105002这个批次的0212002200100000(产品编号)10个,结果他昨天完成了5个,干废了1个,那么今天生成以后的结果就5.31的第一行所示那样。

 

[此贴子已经被作者于2011-5-30 12:09:27编辑过]

6楼
狐狸爸爸 发表于:2011/5/31 8:57:00

也就是按姓名、批次和产品编号来区分? 也就说新增一行后,输入日期、姓名、批次和产品编号四列的内容后,从上一天找出姓名、批次和产品编号相同的行,然后计算领取数量?

 

 

 

 

[此贴子已经被作者于2011-5-31 8:56:54编辑过]
7楼
YDS 发表于:2011/5/31 9:47:00
以下是引用狐狸爸爸在2011-5-31 8:57:00的发言:

也就是按姓名、批次和产品编号来区分? 也就说新增一行后,输入日期、姓名、批次和产品编号四列的内容后,从上一天找出姓名、批次和产品编号相同的行,然后计算领取数量?

 

 嗯嗯 就是这样  如果上一天的领取数量=完成数量+废品数量  则今天不用生成。

 

 

[此贴子已经被作者于2011-5-31 8:56:54编辑过]

[此贴子已经被作者于2011-5-31 9:48:32编辑过]
8楼
狐狸爸爸 发表于:2011/5/31 10:09:00

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

9楼
YDS 发表于:2011/5/31 15:03:00
以下是引用狐狸爸爸在2011-5-31 10:09:00的发言:

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

 

 

 

 

老爹,这个不管用,我做了个窗口,专门生成新的订单

 


图片点击可在新窗口打开查看此主题相关图片如下:110531.jpg
图片点击可在新窗口打开查看

 

生成订单按钮的代码如下,但是只能生成一行新的,怎么样才能把指定日期的所有订单全部检测后生成新的订单呢?

 

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()


 

10楼
狐狸爸爸 发表于:2011/5/31 15:26:00

就应该这样提问,自己先写一下,否则别人不能理解你的意思

 

这样就可以多行了:

 

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

共11 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03125 s, 3 queries.