Foxtable(狐表)用户栏目专家坐堂 → 老爹看下这个代码怎么写?(已解决)


  共有12308人关注过本帖树形打印复制链接

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

帅哥哟,离线,有人找我吗?
YDS
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:643 积分:3684 威望:0 精华:0 注册:2011/5/21 18:05:00
老爹看下这个代码怎么写?(已解决)  发帖心情 Post By:2011/5/30 11:29:00 [只看该作者]

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

 

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

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

 

 

 

 

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

 

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

[此贴子已经被作者于2011-6-13 8:37:00编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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("废品数量")

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
YDS
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:643 积分:3684 威望:0 精华:0 注册:2011/5/21 18:05:00
  发帖心情 Post By: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楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/5/30 12:09:00 [只看该作者]

养成好习惯:

 

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

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

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

 

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

 回到顶部
帅哥哟,离线,有人找我吗?
YDS
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:643 积分:3684 威望:0 精华:0 注册:2011/5/21 18:05:00
  发帖心情 Post By: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楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/5/31 8:57:00 [只看该作者]

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

 

 

 

 

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

 回到顶部
帅哥哟,离线,有人找我吗?
YDS
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:643 积分:3684 威望:0 精华:0 注册:2011/5/21 18:05:00
  发帖心情 Post By: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楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
YDS
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:643 积分:3684 威望:0 精华:0 注册:2011/5/21 18:05:00
  发帖心情 Post By: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楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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 1 2 下一页