以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  应用实例找不到  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=187859)

--  作者:creastzh
--  发布时间:2023/8/16 22:41:00
--  应用实例找不到
稍有一些信心,却被莫名其妙的错误提示搞的焦头烂额,在运行这个任务的时候却有出现这样的提示:
图片点击可在新窗口打开查看
下面是程序:
出现问题的时候是数据表dt1已经运行到最后一行数据 12705#,结果一旦运行到“dr1("ScanOutTime") ”就出现上述问题。
通过检查,ScanOutTime,确实是Date类型
图片点击可在新窗口打开查看

通过dr1("WO") 可以判断该行确实存在,其结果如下,经验证,该工单号信息正常
图片点击可在新窗口打开查看
关键是通过检查 dr1(“ScanOutTime“),其值为‘00:00:00’,显示数据行是成立的。
图片点击可在新窗口打开查看

我的疑问是既然目标行存在,且不同列是存在数据的,但为何就显示找不到实例:
程序:

\'补充扫描数据写入生产问题跟踪表 ProductionIssue_FromAdditionalWO
If User.Type = UserTypeEnum.Developer Then
    \'SystemReady = False 
    If Not DataTables.Contains("AddtionalWOData") Then
        DataTables.Load("AddtionalWOData")
    End If
    If Not DataTables.Contains("ProductionIssue") Then
        DataTables.Load("ProductionIssue")
    End If
    
    Dim dt1 As DataTable = DataTables("AddtionalWOData")
    Dim dt2 As DataTable = DataTables("ProductionIssue")
    Dim i As Integer
    Dim i1 As Integer
    Dim i2 As Integer
    
    If Not DataTables.Contains("ProductDeveloper") Then
        DataTables.Load("ProductDeveloper")
    End If 
    Dim dt3 As DataTable = DataTables("ProductDeveloper") 
    Dim Filter As String
    
    Try
        For Each dr1 As DataRow In dt1.DataRows
            i2 = i2 + 1
            
            If Not dr1.IsNull("问题描述") Then
                If dr1.IsNull("编号") = False Then
                    Filter = "[交易号]=\'" & dr1("编号") & "\'"
                    \'Output.Show(Filter)
                    Dim dr2 As DataRow = dt2.Find(Filter)
                    
                    If dr2 Is Nothing = True Then \'AddNew  
                        i = i + 1
                        
                        Output.Show(i & "," & dr1("WO"))
                        Dim dr2n As DataRow = dt2.AddNew 
                        dr2n("DataResource") = dr1("来源") 
                        dr2n("Date") = dr1("发现时间") 
                        
                        dr2n("ResID") = dr1("ResID") \'ResID
                        dr2n("PartNumber") = dr1("PartID") \'PartID
                        
                        dr2n("WO") = dr1("WO") \'WO
                        dr2n("OP") = dr1("OP") \'OP
                        dr2n("WOQTY") = dr1("Qty") \'WoQty
                        
                        dr2n("Description") = dr1("问题描述") \'Des
                        dr2n("IssueType问题种类") = dr1("问题类别") \'IssueType
                        \'dr2n("Affect后果") = dr1("Question_Affect") \'Affect
                        \'dr2n("DelayHrs延误小时") = dr1("PastDays") \'延误小时
                        dr2n("Res责任部门") = dr1("责任班组") \'Responser=>责任部门
                        \'dr2n("Person责任人") = dr1("Question_Dealer") \'责任人
                        
                        Dim Fl As String = "[PartID]=\'" & dr1("PartID") & "\'"
                        If dt3.Find(fl) IsNot Nothing Then
                            Dim dr3 As DataRow = dt3.Find(fl)
                            If dr3 IsNot Nothing Then
                                dr2n("QE") = dr3("QE") \'QE
                                dr2n("ME") = dr3("ME") \'ME
                            End If
                        End If
                        
                        dr2n("Reviser") = dr1("发现者") \'登记人
                        dr2n("交易号") = dr1("编号") \'交易号
                        
                        dr2n("SolvedDate解决日期") = dr1("ScanOutTime") \'
                        If Isdate(dr2n("SolvedDate解决日期")) Then
                            Dim tp As TimeSpan
                            tp = dr2n("SolvedDate解决日期") - dr2n("Date") 
                            dr2n("WholeTime全程天数") = Round2( tp.TotalDays, 2)
                        End If
                    Else \'已存在,则根据变更内容进行重新写入
                        If dr2("Description") <> dr1("问题描述") Then
                            dr2("Description") = dr1("问题描述") \'Des
                        End If
                        If dr2("IssueType问题种类") <> dr1("问题类别") Then
                            dr2("IssueType问题种类") = dr1("问题类别") \'IssueType                        
                        End If
                        If dr2("Res责任部门") <> dr1("责任班组") Then
                            dr2("Res责任部门") = dr1("责任班组") \'Responser=>责任部门                                        
                        End If
                        If I2 = 12075 Then
                            MessageBox.Show( dr1("wo"))
                            If dr1("WO") = "IWO87363/1" Then 
                                messagebox.Show(dr1("ScanOutTime"))
                            End If
                            If dr1("ScanOutTime") > #01-01-2023# Then  ‘此处出现错误提示’
                                If dr2("SolvedDate解决日期") <> dr1("ScanOutTime") Then
                                    dr2("SolvedDate解决日期") = dr1("ScanOutTime") \'
                                    If Isdate(dr2("SolvedDate解决日期")) Then
                                        Dim tp As TimeSpan
                                        If dr2.IsNull("SolvedDate解决日期") = False And dr2.IsNull("Date") = False Then
                                            tp = dr2("SolvedDate解决日期") - dr2("Date")
                                            dr2("WholeTime全程天数") = tp.TotalDays
                                        Else
                                            dr2("WholeTime全程天数") = Nothing
                                        End If
                                        i = i + 1
                                        Output.Show(i & "," & dr1("WO"))
                                    End If 
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        Next
    Catch ex As Exception \'如果出错
        msgbox(ex.message) 
        MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error)
        GoTo 1
    End Try
    1:
    If i > 0 Then 
        dt2.Save
    End If
    
    Dim dr As DataRow = DataTables("Data").Find("文件更新_文件名 = \'" & "ProductionIssue_FromAdditionnalWO\'")
    dr("文件更新_时间") = Date.Now
    SystemReady = True
End If

请大伙儿帮忙看一下,我实在是么有办法了,谢谢!

--  作者:有点蓝
--  发布时间:2023/8/17 8:56:00
--  
我觉得不是这里出现的错误,调试看看

msgbox("---------i2=" & i2)
msgbox("ScanOutTime=" & dr1("ScanOutTime")) ‘这里是否可以弹出,如果不能看看前面i2等于什么值
                            If dr1("ScanOutTime") > #01-01-2023# Then 
msgbox("i2--------=" & i2
.  ‘此处出现错误提示’

试试改为
If cdate(dr1("ScanOutTime")) > #01-01-2023# Then 

--  作者:creastzh
--  发布时间:2023/8/17 12:57:00
--  
我按此进行测试,总行数为12076, 运行到此位置,显示下方Messagebox 信息,该信息正确

紧接着继续下行到CDate(dr1(ScanOutTime")... 就出现了报警出错信息
图片点击可在新窗口打开查看
这个问题仍没有找到解决方案

[此贴子已经被作者于2023/8/17 12:57:41编辑过]

--  作者:有点蓝
--  发布时间:2023/8/17 13:33:00
--  
肯定不是这里的问题,否则messagebox就已经出错了,不可能弹的出来。

请上传实例测试

--  作者:creastzh
--  发布时间:2023/8/17 14:05:00
--  
今天在开会,或者晚些用QQ共享方式,我的数据较大.
--  作者:有点蓝
--  发布时间:2023/8/17 14:07:00
--  
新建一个项目,做个同样问题的例子,不需要发原项目
--  作者:creastzh
--  发布时间:2023/8/18 16:34:00
--  
我不知道为什么,今天又突然正常了。

不过还是要感谢 有点蓝 老师,是你给了我继续的信心。