做的自动编号,表属性DataColChanged的代码如下,每次打开项目,编码无反应,需要打开表属性再确认下,编码才能自动生成。请教下,什么问题?谢谢!
Select Case e.DataCol.Name
Case "设备编号", "分类"
' 检查是否存在 "设备编号" 或 "分类" 列的值为null
If e.DataRow.IsNull("设备编号") OrElse e.DataRow.IsNull("分类") Then
' 如果其中任何一个为null,将 "案卷级档号" 列的值设置为Nothing
e.DataRow("案卷级档号") = Nothing
Else
' 如果 "设备编号" 和 "分类" 列的值都不为null
Dim d As String = e.DataRow("设备编号")
Dim d1 As String = e.DataRow("分类")
Dim bh As String = d1 & "-" & d & "-" ' 生成编号的前缀
' 检查 "案卷级档号" 列的值是否不以前缀开头
If e.DataRow("案卷级档号").StartsWith(bh) = False Then
Dim max As String
Dim idx As Integer
Dim flt As String
' 计算符合条件的最大编号,以分类和设备编号组成的前缀为条件
flt = "分类 = '" & d1 & "' And 设备编号 = '" & d & "' And [_Identify] <> " & e.DataRow("_Identify")
max = e.DataTable.Compute("Max(案卷级档号)", flt)
' 检查是否存在最大编号
If max > "" Then
' 如果存在最大编号,提取最后两位数字并加1,以获取下一个顺序号
idx = CInt(max.Substring(10, 2)) + 1
Else
此主题相关图片如下:1707206576824.jpg
' 如果不存在最大编号,将顺序号设置为1
idx = 1
End If
' 设置 "案卷级档号" 列的值为前缀和格式化后的顺序号
e.DataRow("案卷级档号") = bh & Format(idx, "00")
End If
End If
End Select