现在想使用“DataColChanged”来实现自动编号功能。
即:
说明:1、ID列应为数据流水号,如果有删除数据,应自动补全流水号(重排流水号)
2、资产编号不能编辑,编号规则是:类别编号+6位流水
3、类别列是一个数据字典,取值编号,显示名称。
下面是代码:
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,8)) + 1 '获得最大编号的后八位顺序号,并加1
Else
idx = 1 '否则顺序号等于1
End If
e.DataRow("资产编号") = lb & Format(idx,"000000")
End If
End If
End Select
现在的问题:一种类别只能增加一条记录。即,XX000001
增加同一种类别第二条记录时报错:
错误所在事件:表,低值耐久品,DataColChanged
详细错误信息:
调用的目标发生了异常。
索引和长度必须引用该字符串内的位置。
参数名: length
请问:各位老师如何解决此问题?谢谢!