以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 范围超出? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=187860) |
-- 作者:creastzh -- 发布时间:2023/8/17 5:39:00 -- 范围超出? 仅是在不同表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数据累次出错,也没有解决. 希望能被解决!
|
-- 作者:有点蓝 -- 发布时间:2023/8/17 9:00:00 -- 关闭退出项目,删除项目所在的文件夹里的bin目录,然后重启项目试试。 |
-- 作者:creastzh -- 发布时间:2023/8/17 10:17:00 -- Bin 目录我昨天就删除重试了,还是不行 |
-- 作者:有点蓝 -- 发布时间:2023/8/17 10:19:00 -- 请上传实例测试 |
-- 作者:程兴刚 -- 发布时间:2023/8/17 10:30:00 -- 非命令窗口测试不能用Output.Show |