Foxtable(狐表)用户栏目专家坐堂 → 实在没找出这段代码有什么问题?


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

主题:实在没找出这段代码有什么问题?

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


加好友 发短信
等级:小狐 帖子:339 积分:3364 威望:0 精华:0 注册:2011/3/22 22:52:00
实在没找出这段代码有什么问题?  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:758 积分:5408 威望:0 精华:0 注册:2012/10/5 21:53:00
  发帖心情 Post By:2019/9/28 20:23:00 [只看该作者]

Substring(0,3)
这个的问题吧

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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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


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


加好友 发短信
等级:小狐 帖子:339 积分:3364 威望:0 精华:0 注册:2011/3/22 22:52:00
  发帖心情 Post By:2019/9/29 9:29:00 [只看该作者]

确实如蓝版所言,因为其它地方有下面一行代码,违反了len(e.NewValue ) >= 3的逻辑。

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


 回到顶部