Foxtable(狐表)用户栏目专家坐堂 → 自动编号错误提示


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

主题:自动编号错误提示

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


加好友 发短信
等级:八尾狐 帖子:1838 积分:13006 威望:0 精华:0 注册:2013/6/10 9:23:00
自动编号错误提示  发帖心情 Post By:2014/1/8 17:04:00 [只看该作者]

自动编号代码

 

Select e.DataCol.Name
    Case "类别代号"
        If e.DataRow.IsNull("类别代号") Then
            e.DataRow("产品编号") = Nothing
        Else
            Dim lb As String = e.DataRow("类别代号")
            If e.DataRow("产品编号").StartsWith(lb) = False '如果单据产品编号前缀不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.Compute("Max(产品编号)","类别代号 = '" & lb & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该类别代号的最大产品编号
                If max > "" Then '如果存在最大产品编号
                    idx = CInt(max.Substring(2,3)) + 1 '获得最大产品编号的后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("产品编号") = lb & Format(idx,"000")
            End If
        End If
End Select

 -------------------------------------------------------------------------------------------------------

错误提示!!!!

 

 

.NET Framework 版本:2.0.50727.3649
Foxtable 版本:2013.10.14.1
错误所在事件:表,产品表,DataColChanged
详细错误信息:
Exception has been thrown by the target of an invocation.
Index and length must refer to a location within the string.
Parameter name: length


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/1/8 17:05:00 [只看该作者]

max.Substring(2,3) 你确保你字符串长度超过5了吗?

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


加好友 发短信
等级:八尾狐 帖子:1838 积分:13006 威望:0 精华:0 注册:2013/6/10 9:23:00
  发帖心情 Post By:2014/1/8 17:06:00 [只看该作者]

没有啊


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


加好友 发短信
等级:八尾狐 帖子:1838 积分:13006 威望:0 精华:0 注册:2013/6/10 9:23:00
  发帖心情 Post By:2014/1/8 17:07:00 [只看该作者]

类别代码为G, 第一个生成的是G001, 第二个编号就出现上述错误

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


加好友 发短信
等级:八尾狐 帖子:1838 积分:13006 威望:0 精华:0 注册:2013/6/10 9:23:00
  发帖心情 Post By:2014/1/8 17:08:00 [只看该作者]

加大字符串如何写

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/1/8 17:09:00 [只看该作者]

你这样不就长度不够不符合了吗? 才4的长度啊.

max.Substring(1,3) 

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


加好友 发短信
等级:八尾狐 帖子:1838 积分:13006 威望:0 精华:0 注册:2013/6/10 9:23:00
  发帖心情 Post By:2014/1/8 17:12:00 [只看该作者]

哦, 我知道了, 必须是连个字符, 类别代号是GG就行, 不过, 列表代号有的是1个,有的是2个, 有的是3个, 怎么办


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/1/8 17:15:00 [只看该作者]

判断一下长度.
max.Substring(max.length-3,3)


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2014/1/8 17:16:00 [只看该作者]

如果长度不等,那么将下面的代码:

 

 

idx = CInt(max.Substring(2,3)) + 1

 

改为:

 

idx = CInt(max.Substring(max.Length -3,3)) + 1


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


加好友 发短信
等级:八尾狐 帖子:1838 积分:13006 威望:0 精华:0 注册:2013/6/10 9:23:00
  发帖心情 Post By:2014/1/8 17:36:00 [只看该作者]

谢谢, OK了

 回到顶部