-- 作者:wqc360
-- 发布时间:2010/10/12 15:01:00
--
这是该表 DatacolChanged 事件代码:我逐段进行加载数据,都没问题,当时全加载就不行。
Dim dr As DataRow = e.DataRow Dim t As TimeSpan If e.DataCol.Name = "计划日期_结束" Orelse e.DataCol.Name = "计划日期_开始" Then If dr.IsNull("计划日期_结束") Orelse dr.IsNull("计划日期_开始") Then dr("周期") = Nothing Else t = dr("计划日期_结束")-dr("计划日期_开始") dr("周期") = t.days+ (t.Hours)/24 End If End If Dim dt As datatable = DataTables("生产工艺") Dim str As String = "图号 = \'" & dr("图号") & "\' And 工序_序号 = \'" & dr("工序_序号") & "\' And 派工单号 = \'" & dr("派工单号") & "\' And 状态 = \'执行\' " If e.DataCol.Name = "图号" Orelse e.DataCol.Name = "工序_序号" Orelse e.DataCol.Name = "派工单号" Then Dim r As DataRow = dt.Find(str) If r IsNot Nothing Then dr("成本_加工") = (dt.Compute("Sum(成本_加工费元)",str)) dr("成本_工资") = (dt.Compute("Sum(成本_工资元)",str)) dr("工艺工时_准结") = (dt.Compute("Sum(工艺工时_准结)",str)) dr("工艺工时_加工")=(dt.Compute("Sum(工艺工时_加工)",str)) dr("完成工时_准结")=(dt.Compute("Sum(完成工时_准结)",str)) dr("完成工时_加工")=(dt.Compute("Sum(完成工时_加工)",str)) dr("工废损失")=(dt.Compute("Sum(工废损失)",str)) dr("实用工时")=(dt.Compute("Sum(实用工时)",str)) dr("工艺工时_天数")=(dt.Compute("Sum(工艺工时_天数)",str)) dr("完成工时_天数")=(dt.Compute("Sum(完成工时_天数)",str)) End If End If Select Case e.DataCol.Name Case "工艺工时_准结","工艺工时_加工","完成工时_准结","完成工时_加工","工作时间" dr("完成工时_比例")=(dr("完成工时_准结")+dr("完成工时_加工"))/(dr("工艺工时_准结")+dr("工艺工时_加工")) Case "周期" Select Case dr("周期") Case Nothing dr("周期比例")= Nothing Case Else dr("周期比例")=dr("周期")/dr("工艺工时_天数") End Select Case "周期比例" Select Case dr("周期比例") Case Nothing dr("周期情况") = Nothing Case 0 To 1 dr("周期情况") = "请提前准备" Case 1.001 To 1.5 dr("周期情况") = "注意进度" Case 1.501 To 2.5 dr("周期情况") = "正常安排" Case 2.501 To 1000 dr("周期情况") = "可往后安排" End Select Case "完成工时_比例" Select Case dr("完成工时_比例") Case 0 Select Case dr("计划日期_结束") Case Nothing dr("在线情况") = Nothing Case Else dr("在线情况") = "待上线" End Select Case 0 To 0.9999 dr("在线情况") = "在线生产" Case 1 dr("在线情况") = "已完工" End Select Case "剩余天数_开始" Select Case dr("剩余天数_开始") Case Nothing dr("开始天数") = Nothing Case 0 To 1 dr("开始天数") = "今天上线" Case 1.1 To 2 dr("开始天数") = "明天上线" Case 2.1 To 3 dr("开始天数") = "后天上线" Case 3.1 To 5 dr("开始天数") = "3天后上线" Case 5.1 To 7 dr("开始天数") = "5天后上线" Case 7.1 To 15 dr("开始天数") = "7天后上线" Case 15.1 To 30 dr("开始天数") = "半月后上线" Case 30.1 To 10000 dr("开始天数") = "1个月后上线" End Select Case "剩余天数_结束" Select Case dr("剩余天数_结束") Case Nothing dr("结束天数") = Nothing Case 0 To 1 dr("结束天数") = "今天完工" Case 1.1 To 2 dr("结束天数") = "明天完工" Case 2.1 To 3 dr("结束天数") = "后天完工" Case 3.1 To 5 dr("结束天数") = "5天内完工" Case 5.1 To 7 dr("结束天数") = "7天内完工" Case 7.1 To 15 dr("结束天数") = "半月内完工" Case 15.1 To 30 dr("结束天数") = "1个月内完工" Case 30.1 To 10000 dr("结束天数") = "1个月后完工" End Select End Select
If e.DataCol.Name = "确定" Then \'如果是已结帐列的内容变动 If e.NewValue = True Then \'而且变动后的值是True(已勾选) e.DataRow.Locked = True \'那么锁定此行 End If End If If e.DataCol.name = "图号" Orelse e.DataCol.name = "派工单号" Orelse e.DataCol.name = "工序_序号" e.DataRow("实际日期_开始") = DataTables("日报表").Compute("min(日期)","[图号] = \'" & e.DataRow("图号") & "\'and [派工单号] = \'" & e.DataRow("派工单号") & "\'and [工序_序号] = \'" & e.DataRow("工序_序号") & "\' ") e.DataRow("实际日期_结束") = DataTables("日报表").Compute("max(日期)","[图号] = \'" & e.DataRow("图号") & "\'and [派工单号] = \'" & e.DataRow("派工单号") & "\'and [工序_序号] = \'" & e.DataRow("工序_序号") & "\' ") End If If e.DataCol.Name = "计划日期_开始" Orelse e.DataCol.Name = "计划日期_结束" Then If dr.IsNull("计划日期_开始") Orelse dr.IsNull("计划日期_结束") Then dr("剩余天数_结束") = Nothing dr("剩余天数_开始") = Nothing Else dr("剩余天数_结束") = DateDiff("h",Date.Today.Now,dr("计划日期_结束"))/24 dr("剩余天数_开始") = DateDiff("h",Date.Today.Now,dr("计划日期_开始"))/24 End If End If If e.DataCol.Name = "图号" Orelse e.DataCol.Name = "派工单号" Then Dim dr3 As DataRow = DataTables("生产目录").Find("[图号] = \'" & e.DataRow("图号") & "\' And [派工单号] = \'" & e.DataRow("派工单号") & "\' ") If dr3 IsNot Nothing Then e.DataRow("到料数量") = dr3("到料数量") e.DataRow("计划数量") = dr3("计划数量") e.DataRow("交货情况") = dr3("交货情况") Else e.DataRow("到料数量") = Nothing e.DataRow("计划数量") = Nothing e.DataRow("交货情况") = Nothing End If End If If e.DataCol.Name = "图号" Orelse e.DataCol.Name = "工序_序号" Then Dim dr2 As DataRow = DataTables("产品工序").Find("[图号] = \'" & e.DataRow("图号") & "\'And [工序_序号] = \'" & e.DataRow("工序_序号") & "\' ") If dr2 IsNot Nothing Then e.DataRow("图名") = dr2("图名") e.DataRow("工序号") = dr2("工序号") e.DataRow("机型") = dr2("机型") e.DataRow("所属部分") = dr2("所属部分") e.DataRow("名称") = dr2("名称") e.DataRow("工序_班组") = dr2("工序_班组") e.DataRow("工序_简要提示") = dr2("工序_简要提示") e.DataRow("备注") = dr2("备注") e.DataRow("照片") = dr2("照片") e.DataRow("确定") = dr2("确定") Else e.DataRow("图名") = Nothing e.DataRow("工序号") = Nothing e.DataRow("机型") = Nothing e.DataRow("所属部分") = Nothing e.DataRow("名称") = Nothing e.DataRow("工序_班组") = Nothing e.DataRow("工序_简要提示") = Nothing e.DataRow("备注") = Nothing e.DataRow("照片") = Nothing e.DataRow("确定") = Nothing End If End If If e.DataCol.Name = "图号" Orelse e.DataCol.Name = "工序_序号" Orelse e.DataCol.Name = "派工单号" Then If dr.IsNull("图号") Orelse dr.IsNull("派工单号") Orelse dr.IsNull("工序_序号") Orelse dr.IsNull("工艺工时_天数") Orelse dr("状态") = "暂停" Then dr("计划日期_结束") = Nothing dr("计划日期_开始") = Nothing Else Dim pr As DataRow = DataTables("生产目录").Find("[图号] = \'" & e.DataRow("图号") & "\'And [派工单号] = \'" & e.DataRow("派工单号") & "\' ") Dim Sum As Double = Tables("生产工序").Compute("Sum(工艺工时_天数)","[图号] = \'" & dr("图号") & "\' And [派工单号] = \'" & dr("派工单号") & "\' And [状态]= \'执行\' And [工序_序号] <= " & dr("工序_序号")) Dim Sum1 As Double = Tables("生产工序").Compute("Sum(工艺工时_天数)","[图号] = \'" & dr("图号") & "\' And [派工单号] = \'" & dr("派工单号") & "\' And [状态]= \'执行\' And [工序_序号] >= " & dr("工序_序号")) If pr Is Nothing Then dr("计划日期_结束") = Nothing dr("计划日期_开始") = Nothing Else If pr.IsNull("生产周期") Orelse pr.IsNull("工艺工时_天数") Then dr("计划日期_结束") = Nothing dr("计划日期_开始") = Nothing Else dr("计划日期_结束") = pr("到料日期").AddDays(Sum * (pr("生产周期")/pr("工艺工时_天数"))) dr("计划日期_开始") = pr("完工日期").AddDays(-Sum1 * (pr("生产周期")/pr("工艺工时_天数"))+0.5) End If End If End If End If
|