Foxtable(狐表)用户栏目专家坐堂 → 出错:索引和长度必须引用该字符串内的位置?


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

主题:出错:索引和长度必须引用该字符串内的位置?

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


加好友 发短信
等级:四尾狐 帖子:902 积分:8258 威望:0 精华:0 注册:2012/10/19 13:55:00
出错:索引和长度必须引用该字符串内的位置?  发帖心情 Post By:2019/4/12 20:07:00 [只看该作者]

            If e.DataRow.IsNull("入库日期") Then
                e.DataRow("入库编号") = Nothing
            Else
                Dim bh1 As String = "RT" & Format(e.DataRow("入库日期"),"yyyyMMdd") '取得入库编号的8位前缀
                If e.DataRow("入库编号").StartsWith(bh1) = False '如果入库编号的前8位不符
                    Dim max1 As String
                    Dim idx1 As Integer
                    Dim d1 As Date = e.DataRow("入库日期").Date
                    max1 = e.DataTable.Compute("Max(入库编号)","入库日期 >= #" & d1 & "# And 入库日期 < #" & d1.adddays(1) & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该月的最大编号
                    If max1 > "" Then '如果存在最大入库编号
                        idx1 = CInt(max1.Substring(bh1.length+1,3)) + 1 '获得最大过磅编号的后三位顺序号,并加1
                    Else
                        idx1 = 1 '否则顺序号等于1
                    End If
                    e.DataRow("入库编号") = bh1 & Format(idx1,"000")
                End If
            End If


这段自动编号,提示错误:
.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2018.10.9.1
错误所在事件:表,入库订单表,DataColChanged
详细错误信息:
调用的目标发生了异常。
索引和长度必须引用该字符串内的位置。
参数名: length

请问怎么改?

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


加好友 发短信
等级:狐精 帖子:3205 积分:21299 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/4/12 20:22:00 [只看该作者]

示例2不就是你要的
http://www.foxtable.com/webhelp/scr/2403.htm

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/12 20:31:00 [只看该作者]


 idx1 = CInt(max1.Substring(bh1.length-3,3)) + 1 '

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


加好友 发短信
等级:四尾狐 帖子:902 积分:8258 威望:0 精华:0 注册:2012/10/19 13:55:00
回复:(有点蓝)http://www.foxtable.com/webhelp/sc...  发帖心情 Post By:2019/4/12 21:03:00 [只看该作者]

            If e.DataRow.IsNull("入库日期") Then
                e.DataRow("入库编号") = Nothing
            Else
                Dim bh1 As String = "RT" & Format(e.DataRow("入库日期"),"yyyyMMdd") '取得入库编号的8位前缀
                If e.DataRow("入库编号").StartsWith(bh1) = False '如果入库编号的前8位不符
                    Dim max1 As String
                    Dim idx1 As Integer
                    Dim d1 As Date = e.DataRow("入库日期").Date
                    max1 = e.DataTable.Compute("Max(入库编号)","入库日期 >= #" & d1 & "# And 入库日期 < #" & d1.adddays(1) & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该月的最大编号
                    If max1 > "" Then '如果存在最大入库编号
                        idx1 = CInt(max1.Substring(bh1.length-3,3)) + 1 '获得最大过磅编号的后三位顺序号,并加1
                    Else
                        idx1 = 1 '否则顺序号等于1
                    End If
                    e.DataRow("入库编号") = bh1 & Format(idx1,"000")
                End If
            End If

测试结果是:
编号只有第一个是RT20190412001,后面的编号,都是一样的RT20190412413

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/12 21:26:00 [只看该作者]

代码没有问题,上传实例测试

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


加好友 发短信
等级:四尾狐 帖子:902 积分:8258 威望:0 精华:0 注册:2012/10/19 13:55:00
  发帖心情 Post By:2019/4/12 21:27:00 [只看该作者]

在“入库订单表”中测试:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试5.zip

[此贴子已经被作者于2019/4/12 21:27:53编辑过]

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/12 22:04:00 [只看该作者]

 idx1 = CInt(max1.Substring(max1.length-3,3)) + 1 

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


加好友 发短信
等级:四尾狐 帖子:902 积分:8258 威望:0 精华:0 注册:2012/10/19 13:55:00
回复:(有点蓝) idx1 = CInt(max1.Substring(m...  发帖心情 Post By:2019/4/12 22:14:00 [只看该作者]

想要把这个红色的“20”去掉,应该怎么改呀?
RT20190412413
RT190412413

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/12 22:32:00 [只看该作者]

Dim bh1 As String = "RT" & Format(e.DataRow("入库日期"),"yyMMdd") 

 回到顶部