Foxtable(狐表)用户栏目专家坐堂 → 范围超出?


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

主题:范围超出?

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


加好友 发短信
等级:童狐 帖子:298 积分:2198 威望:0 精华:0 注册:2023/1/11 7:15:00
范围超出?  发帖心情 Post By: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数据累次出错,也没有解决. 

希望能被解决!

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110763 积分:563747 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/8/17 9:00:00 [只看该作者]

关闭退出项目,删除项目所在的文件夹里的bin目录,然后重启项目试试。

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


加好友 发短信
等级:童狐 帖子:298 积分:2198 威望:0 精华:0 注册:2023/1/11 7:15:00
  发帖心情 Post By:2023/8/17 10:17:00 [只看该作者]

Bin 目录我昨天就删除重试了,还是不行

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110763 积分:563747 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/8/17 10:19:00 [只看该作者]

请上传实例测试

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2023/8/17 10:30:00 [只看该作者]

非命令窗口测试不能用Output.Show

 回到顶部