仅是在不同表WorkOrderStatus中读取相关数据,然后写入一个固定表ProductionIssue,运行中又出现了异常:
看起来这个是列数不匹配导致,但不应该呀,这里就是引用数据行处理数据
原始程序段:
'转移工单数据WorkOrderStatus 中的问题行到生产问题跟踪表(ProductionIssue),工序开工/完工延误等信息确认
Dim Dt1 As DataTable = DataTables("WorkOrderStatus")
Dim dt2 As DataTable = DataTables("ProductionIssue")
Dim dt3 As DataTable = DataTables("ResourceID")
Dim dt4 As DataTable = DataTables("ProductDeveloper")
Dim PN As String
Dim WO As String
Dim OP As String
Dim Res As String
Dim Filter As String
Dim nr As String
Dim t As Integer
Dim i1 As Integer '用于调试
Dim t1 As Integer
Dim bDate As Date
Dim dr1e As DataRow = DataTables("Data").Find("文件更新_文件名 = 'TransWOStatusToProductionIssue'")
bDate = dr1e("文件更新_时间").AddDays( - 6)
For Each dr1 As DataRow In Dt1.DataRows
i1 = i1 + 1
If dr1("基本信息_ActStart") >= bDate Then
WO = dr1("基本信息_WO")
OP = dr1("基本信息_OP")
Res = dr1("基本信息_ResID")
PN = dr1("基本信息_PartID")
'计算该工序上工序完工时间
Dim CmpTimePre As Date
Dim ResPre As String
Dim ResCell As String
Dim dr1p As DataRow = dt1.Find("基本信息_WO = '" & WO & "' and 基本信息_OP < " & OP , "基本信息_OP Desc")
If i1 >= 3469 Then
'MessageBox.Show(dt1.datarows.Count)
Output.Show(i1 & "," & dr1("基本信息_WO") & "|" & dr1("基本信息_OP"))
'找到了第3469,IWO85239/1|100 出现了异常
'GoTo 1
End If
If dr1p IsNot Nothing Then
'MessageBox.Show(1)
CmpTimePre = dr1p("基本信息_ActFINISH") '上工序的完工工序时间
ResPre = dr1p("基本信息_ResID") '上工序资源号
Dim d3a As DataRow = dt3.Find("ResID = '" & ResPre & "'")
If d3a IsNot Nothing Then
ResCell = d3a("适用于标准化后的班组名称") '责任班组
End If
End If
'MessageBox.Show(2)
If dr1("开工滞留天") > 0.5 Then
If dr1("完工延迟天") > 0.5 Then
'开工、完工同时滞留超过0.5天
nr = "开工,完工延误,计划开工:" & Format(dr1("修订计划_开工"), "G") & ",实际开工:" & Format(dr1("基本信息_ActStart"), "G") & ", 计划完工:" & Format(dr1("修订计划_完工"), "G") & ",实际完工:" & Format(dr1("基本信息_ActFINISH"), "G")
Filter = "WO='" & WO & "' and OP = " & OP & " and Description like '开工,完工延误*'"
Dim yw As Single '延误
yw = Round2( Math.Max( dr1("开工滞留天") , dr1("完工延迟天")) * 24, 2)
Dim dr2 As DataRow = dt2.Find(Filter)
If dr2 IsNot Nothing Then '找到该数据行
If dr2("DelayHrs延误小时") <> yw Then
dr2("DelayHrs延误小时") = yw '延误天数
End If
If dr2("Description") <> nr Then
dr2("Description") = nr '内容描述
End If
Else '没有该数据行,须新增
Dim dr2n As DataRow = dt2.AddNew(1)
Dim dr3 As DataRow = dt3.Find("ResID ='" & Res & "'")
dr2n("Date") = Date.Today
If dr3 IsNot Nothing Then
dr2n("DataResource") = dr3("适用于标准化后的班组名称") '班组
End If
dr2n("Reviser") = "系统" '登记人
dr2n("来源S_And_C") = "R" '来源
'dr2n("NPI=1Mass=0") = dr1("") 'NPI
dr2n("WO") = dr1("基本信息_WO") '工单号
dr2n("PartNumber") = dr1("基本信息_PartID") '零件号
dr2n("OP") = dr1("基本信息_OP") '工序号
dr2n("ResID") = dr1("基本信息_ResID") '资源号
dr2n("WOQTY") = dr1("ACTQty_IN") '工序数
t = t + 1
If CmpTimePre > #1-1-2020# Then
Dim zy As Single '转移工序的时间
zy = ( CDate(dr1("基本信息_ActStart")) - CmpTimePre).TotalHours
If zy < 12 Then '上工序到本工序间的停留<12小时
dr2n("IssueType问题种类") = "上工序延误" '问题种类
dr2n("Res责任部门") = ResCell '责任部门
Else
dr2n("IssueType问题种类") = "工序停滞" '问题种类
End If
Else
dr2n("IssueType问题种类") = "工序停滞" '问题种类
End If
dr2n("Description") = nr '问题描述
dr2n("Affect后果") = "交期晚" '后果
dr2n("DelayHrs延误小时") = yw '延误(Hrs)
'dr2n("Person责任人") = dr1("") '责任人
Dim dr4 As DataRow = DataTables("ProductDeveloper").Find("PartID= '" & PN & "'")
If dr4 IsNot Nothing Then
dr2n("QE") = dr4("QE") 'QE
dr2n("ME") = dr4("ME") 'ME
End If
End If
Else '开工滞留超过1天,完工延误小于0.5 或未结束
nr = "开工延误,计划开工:" & Format(dr1("修订计划_开工"), "G") & ",实际开工:" & Format(dr1("基本信息_ActStart"), "G")
Filter = "WO='" & WO & "' and OP = " & OP & " and Description like '开工延误*'"
Dim dr2 As DataRow = dt2.Find(Filter)
Dim yw As Single
yw = round2(dr1("开工滞留天") * 24, 2)
If dr2 IsNot Nothing Then '找到该数据行
If dr2("DelayHrs延误小时") <> yw Then
dr2("DelayHrs延误小时") = yw '延误天数
End If
If dr2("Description") <> nr Then
dr2("Description") = nr '内容描述
End If
Else '没有该数据行,须新增
Dim dr2n As DataRow = dt2.AddNew(1)
Dim dr3 As DataRow = dt3.Find("ResID ='" & Res & "'")
dr2n("Date") = Date.Today
If dr3 IsNot Nothing Then
dr2n("DataResource") = dr3("适用于标准化后的班组名称") '班组
End If
dr2n("Reviser") = "系统" '登记人
dr2n("来源S_And_C") = "R" '来源
'dr2n("NPI=1Mass=0") = dr1("") 'NPI
dr2n("WO") = dr1("基本信息_WO") '工单号
dr2n("PartNumber") = dr1("基本信息_PartID") '零件号
dr2n("OP") = dr1("基本信息_OP") '工序号
dr2n("ResID") = dr1("基本信息_ResID") '资源号
dr2n("WOQTY") = dr1("ACTQty_IN") '工序数
If CmpTimePre > #1-1-2020# Then
Dim zy As Single '转移工序的时间
zy = ( CDate(dr1("基本信息_ActStart")) - CmpTimePre).TotalHours
If zy < 12 Then '上工序到本工序间的停留<12小时
dr2n("IssueType问题种类") = "上工序延误" '问题种类
dr2n("Res责任部门") = ResCell '责任部门
Else
dr2n("IssueType问题种类") = "工序停滞" '问题种类
End If
Else
dr2n("IssueType问题种类") = "工序停滞" '问题种类
End If
dr2n("Description") = nr '问题描述
dr2n("Affect后果") = "交期晚" '后果
dr2n("DelayHrs延误小时") = yw '延误(Hrs)
'dr2n("Res责任部门") = dr1("") '责任部门
'dr2n("Person责任人") = dr1("") '责任人
Dim dr4 As DataRow = DataTables("ProductDeveloper").Find("PartID= '" & PN & "'")
If dr4 IsNot Nothing Then
dr2n("QE") = dr4("QE") 'QE
dr2n("ME") = dr4("ME") 'ME
End If
End If
End If
Else '开工延误《0.5天
If dr1("完工延迟天") > 0.5 AndAlso dr1("状态").Contains("C") Then '须确认该工序是否已经完工,如果已经完工则进行确认
nr = "完工延误,完工开工:" & Format(dr1("修订计划_完工"), "G") & ",实际完工:" & Format(dr1("基本信息_ActFINISH"), "G")
Filter = "WO='" & WO & "' and OP = " & OP & " and Description like '完工延误*'"
Dim dr2 As DataRow = dt2.Find(Filter)
Dim yw As Single
yw = round2(dr1("完工延迟天") * 24, 2)
If dr2 IsNot Nothing Then '找到该数据行
If dr2("DelayHrs延误小时") <> yw Then
dr2("DelayHrs延误小时") = yw '延误小时数
End If
If dr2("Description") <> nr Then
dr2("Description") = nr '内容描述
End If
Else '没有该数据行,须新增
Dim dr2n As DataRow = dt2.AddNew(1)
Dim dr3 As DataRow = dt3.Find("ResID ='" & Res & "'")
dr2n("Date") = Date.Today
If dr3 IsNot Nothing Then
dr2n("DataResource") = dr3("适用于标准化后的班组名称") '班组
End If
dr2n("Reviser") = "系统" '登记人
dr2n("来源S_And_C") = "R" '来源
'dr2n("NPI=1Mass=0") = dr1("") 'NPI
dr2n("WO") = dr1("基本信息_WO") '工单号
dr2n("PartNumber") = dr1("基本信息_PartID") '零件号
dr2n("OP") = dr1("基本信息_OP") '工序号
dr2n("ResID") = dr1("基本信息_ResID") '资源号
dr2n("WOQTY") = dr1("ACTQty_IN") '工序数
dr2n("Description") = nr '问题描述
dr2n("IssueType问题种类") = "工序停滞" '问题种类
dr2n("Affect后果") = "交期晚" '后果
dr2n("DelayHrs延误小时") = yw '延误(Hrs)
'dr2n("Res责任部门") = dr1("") '责任部门
'dr2n("Person责任人") = dr1("") '责任人
Dim dr4 As DataRow = DataTables("ProductDeveloper").Find("PartID= '" & PN & "'")
If dr4 IsNot Nothing Then
dr2n("QE") = dr4("QE") 'QE
dr2n("ME") = dr4("ME") 'ME
End If
End If
End If
End If
End If
Next
1:
'Dim dr1e As DataRow = DataTables("Data").Find("文件更新_文件名 = 'TransWOStatusToProductionIssue'")
dr1e("文件更新_时间") = Date.Now '最近更新时间
我再次将中断点加到了下面的这个位置:
错误又现, 我根本无法理解! 昨日导入Excel数据累次出错,也没有解决.
希望能被解决!