以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]最大编号的问题。  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=57551)

--  作者:liujywwy
--  发布时间:2014/9/26 14:46:00
--  [求助]最大编号的问题。

Dim d As Date = Date.Today
Dim y As Integer = d.Year
Dim m As Integer = d.Month
Dim bh As String = Format(d,"yyyyMM") \'生成编号的前6位,4位年,2位月.
Dim max As String
Dim idx As Integer
max = e.DataTable.sqlCompute("Max(需求编号)","需求编号 like \'" & bh & "%\'")
If max > "" Then \'如果存在最大编号
    idx = CInt(max.Substring((bh.length) + 1,3)) + 1 \'获得最大编号的后三位顺序号,并加1
Else
    idx = 1 \'否则顺序号等于1
End If
e.DataRow("需求编号") = bh & Format(idx,"000")

 

编号想改为201409***,比如201409021,201409022.顺序加下去。可是怎么报错啊。红色的代码不对么。

.NET Framework 版本:2.0.50727.8009
Foxtable 版本:2014.9.23.1
错误所在事件:表,需求明细表,DataRowAdded
详细错误信息:
调用的目标发生了异常。
索引和长度必须引用该字符串内的位置。
参数名: length

 

 

[此贴子已经被作者于2014-9-26 14:46:53编辑过]

--  作者:有点甜
--  发布时间:2014/9/26 14:50:00
--  

改一下

 

idx = CInt(max.Substring(bh.length, 3)) + 1 \'获得最大编号的后三位顺序号,并加1

[此贴子已经被作者于2014-9-26 14:50:30编辑过]

--  作者:liujywwy
--  发布时间:2014/9/26 14:54:00
--  
这个早就试过了,也报同样的错。
--  作者:有点甜
--  发布时间:2014/9/26 14:56:00
--  
 应该是你原本的编号有问题吧?msgbox(max)看看,试试移除掉原来的记录。
--  作者:liujywwy
--  发布时间:2014/9/26 14:59:00
--  
以下是引用有点甜在2014-9-26 14:56:00的发言:
 应该是你原本的编号有问题吧?msgbox(max)看看,试试移除掉原来的记录。

原来是有记录

比如20140998,20140999.在不移除原来的记录,就没法改了。比如下个新增行变为201409100,201409101


--  作者:有点甜
--  发布时间:2014/9/26 15:00:00
--  
 加入代码msgbox(max)看看弹出的值是什么。
--  作者:有点甜
--  发布时间:2014/9/26 15:03:00
--  
 如果你原本的记录是两位的,需要用代码把它们规范起来,把两位的99变成三位099
--  作者:liujywwy
--  发布时间:2014/9/26 15:04:00
--  
以下是引用有点甜在2014-9-26 15:00:00的发言:
 加入代码msgbox(max)看看弹出的值是什么。


图片点击可在新窗口打开查看此主题相关图片如下:20140999.png
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2014/9/26 15:04:00
--  
 看7楼,要改数据。
--  作者:liujywwy
--  发布时间:2014/9/26 15:11:00
--  

就是我手动把2014099改为201409099,下个数字就应该正常了201409100,201409101.

但是呢,我把2014099这一行解锁后,这个单元格仍然不能编辑。怎么办?