我在项目事件的LoadUserSetting里面加了过滤条件If User.Group = "管理人员" Then
DataTables("项目表").LoadFilter = ""
Else
DataTables("项目表").LoadFilter = "录入人员 = '" & User.Name & "'"
End If
DataTables("项目表").Load()
然后表“项目表”的表事件DataColChanged里面根据年度找到该年度的最大值,然后加1,但因为筛选过了,只能找到该录入人员名下最大的
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(6,5)) + 1 '获得最大产品批号并加1
Else
idx = 1 '否则顺序号等于1
End If
e.DataRow("产品批号") = lb & Format(idx,"00000")
End If
End If
End Select
[此贴子已经被作者于2021/3/3 10:32:37编辑过]