以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  实在没找出这段代码有什么问题?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=141424)

--  作者:旭日生
--  发布时间:2019/9/28 19:35:00
--  实在没找出这段代码有什么问题?

下面这段代码,如果没有 有颜色部分代码,完全正常。一旦有这段内容,则出现下面错误提示。问题是,这些代码之前也都使用过,完全正常。请版主帮助分析一下原因:


此主题相关图片如下:image 1.jpg
按此在新窗口浏览图片

If e.DataCol.Name = "列一" Then

    If e.DataRow.IsNull("列一") Then

        e.DataRow("列二") = Nothing

    ElseIf len(e.NewValue ) >= 3  Then

        e.DataRow("列一") = e.NewValue

        e.DataRow("列二") = e.NewValue.Substring(0,3)


 \'从表二中读取列三内容。

        Dim dr3 As DataRow = DataTables("表二").Find("列一 = \'" & e.newValue & "\'")

        If dr3 Is Nothing Then

            e.DataRow("列三") = "错误"

        ElseIf dr3 IsNot Nothing Then

            e.DataRow("列三") = dr3("列三")

        End If

 

    ElseIf len(e.NewValue ) < 3  Then

        e.DataRow("列一") = "错误"

        e.DataRow("列二") = ""

    End If

End If

 


--  作者:z769036165
--  发布时间:2019/9/28 20:23:00
--  
Substring(0,3)
这个的问题吧

--  作者:有点蓝
--  发布时间:2019/9/29 8:35:00
--  
列二和列三赋值后会不会触发其它事件?

If e.DataCol.Name = "列一" Then
    If e.DataRow.IsNull("列一") Then
        e.DataRow("列二") = Nothing
    Else
        If len(e.NewValue ) >= 3  Then
 msgbox(e.NewValue) ‘出错时这里显示什么内容
            e.DataRow("列二") = e.NewValue.Substring(0,3)
            
            \'从表二中读取列三内容.
            Dim dr3 As DataRow = DataTables("表二").Find("列一 = \'" & e.newValue & "\'")
            If dr3 Is Nothing Then
                e.DataRow("列三") = "错误"
            Else
                e.DataRow("列三") = dr3("列三")
            End If
            
        Else
            e.DataRow("列一") = "错误"
            e.DataRow("列二") = ""
        End If
    End If
End If


--  作者:旭日生
--  发布时间:2019/9/29 9:29:00
--  
确实如蓝版所言,因为其它地方有下面一行代码,违反了len(e.NewValue ) >= 3的逻辑。

e.DataRow("保管期限")="永久" OrElse e.DataRow("保管期限")="Y00"