-- 作者:wangtaolove
-- 发布时间:2024/2/6 16:10:00
-- [求助]每次打开项目,表属性DataColChanged都需要确认下,才能执行,请教下问题出在哪?
做的自动编号,表属性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
|