Foxtable(狐表)用户栏目专家坐堂 → [求助]length错误提示


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

主题:[求助]length错误提示

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20161 威望:0 精华:0 注册:2012/2/3 17:45:00
[求助]length错误提示  发帖心情 Post By:2018/6/5 13:58:00 [只看该作者]

老师,
  标注颜色的部分 会提示错误 ,应该怎么改呢?
.NET Framework 版本:2.0.50727.8830
Foxtable 版本:2018.3.9.1
错误所在事件:自定义函数za_nb_rederegular
详细错误信息:
调用的目标发生了异常。
索引和长度必须引用该字符串内的位置。
参数名: length


Dim e As object=args(0)
'判断编码规则开始
Dim dt As DataTable=Functions.Execute("tablloading","readrules")
If dt.DataRows.count>0 Then
    Dim name As String
    Dim dr As DataRow=dt.find("[tblcolid]='"& e.DataCol.Name &"' and  [tbltname]='"& e.DataTable.name &"'")
    If dr IsNot Nothing Then
        '读取规则
        Dim reg As new System.Text.RegularExpressions.Regex(dr("colrgular"))
        If reg.Ismatch(e.NewValue) = False Then
            e.Cancel = True
            PopMessage("不符合规则")
            Return Nothing
        Else
            Dim count As Integer = 0
            For i As Integer = 0 To dr("colong").length - 1
                count += val(dr("colong").chars(i))
                Dim str As String = e.NewValue.Substring(0, count)
                MessageBox.Show(count < e.NewValue.length)
                If count < e.NewValue.length Then

                    If e.DataTable.find(dr("tblcolid") & "='" & str & "'") Is Nothing Then
                        MessageBox.Show(2)
                        PopMessage("缺少上级编码:" & str,"错误", PopIconEnum.Error, 5)
                        e.Cancel = True
                        Return Nothing
                        Exit For
                        MessageBox.Show(3)
                    End If
                 
                End If
            Next
        End If
    End If
End If
[此贴子已经被作者于2018/6/5 14:12:37编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/5 15:57:00 [只看该作者]

一般这句代码有错

 

Dim str As String = e.NewValue.Substring(0, count)

 

当 e.newvalue 的长度小于count的时候,就会报错。


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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20161 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2018/6/5 17:06:00 [只看该作者]

老师,
   没有搞定,表A 的第一列 录入 01  就会提示错误,您给看看。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:表事件.table



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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/5 17:41:00 [只看该作者]

Dim dt As DataTable=DataTables("表B")
If dt.DataRows.count>0 Then
    Dim name As String
    Dim dr As DataRow=dt.find("[tblcolid]='"& e.DataCol.Name &"' and  [tbltname]='"& e.DataTable.name &"'")
    If dr IsNot Nothing And e.NewValue IsNot Nothing Then
        '读取规则
        Dim reg As new System.Text.RegularExpressions.Regex(dr("colrgular"))
        If reg.Ismatch(e.NewValue) = False Then
            e.Cancel = True
            PopMessage("不符合规则")
            'Return Nothing
        Else
            Dim count As Integer = 0
            For i As Integer = 0 To dr("colong").length - 1
                count += val(dr("colong").chars(i))
                If count < e.NewValue.length Then
                    Dim str As String = e.NewValue.Substring(0, count)

                    If e.DataTable.find(dr("tblcolid") & "='" & str & "'") Is Nothing Then
                        PopMessage("缺少上级编码:" & str,"错误", PopIconEnum.Error, 5)
                        e.Cancel = True
                        'Return Nothing
                        Exit For
                    End If
                End If
            Next
        End If
    End If
End If

 回到顶部