代码如下:(如:我原来有GYS001 ; 为什么自动新增时,还会新增一个GYS001呢?)奇怪。是局域网的另一台电脑上增加的。以前好像没有出过错。是不是代码不严谨?
'自动获取合作类型代码并生成供应商编号
S elect 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
Dim cmd2 As New SQLCommand
cmd2.C
cmd2.CommandText = "S elect [_Identify],类别代码,供应商编号 From {供应商} " '注意要包括主键列
Dim dt2 As DataTable = cmd2.ExecuteReader() '注意可选参数设置为True
If dt2.DataRows.Count > 0 Then
max = dt2.Compute("Max(供应商编号)","类别代码 = '" & lb & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该类别代码的最大供应商编号
If max > "" Then '如果存在最大供应商编号
idx = CInt(max.Substring(3,3)) + 1 '获得最大供应商编号的后三位顺序号,并加1
Else
idx = 1 '否则顺序号等于1
End If
Else
idx = 1 '否则顺序号等于1
End If
e.DataRow("供应商编号") = lb & Format(idx,"000")
End If
End If
End S elect