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


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

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

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望: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("废品数量")

 

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


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/5/30 12:09:00 [显示全部帖子]

养成好习惯:

 

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

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

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

 

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

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/5/31 8:57:00 [显示全部帖子]

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

 

 

 

 

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

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望: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


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望: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


 回到顶部