一直没回复,只好新开一贴
在表的beforesavedatarow中用了如下的代码,在表中增加了前辍相同的多行后按项目默认的那个保存按钮保存时,SQL数据库会提示违反唯一约束或索引的错误提示,主要原因就是保存第一行时查询到后台原来的最大值是21,保存后生成新的最大编码22,应该执行到保存第二行时查询到的最大值应该是22,此时第二行再保存就会再生成新的最大值23,如此类推一次保存新增的多行应该不会出错。但每行保存时提示的最大值都是21,难道ft的保存机制时新增多行时是一次同时保存的吗?我这种情况同时增加多行时每行保存时都能续用上一行产生的最大编码+1要怎么办?
谢谢!
'直接从产品编码中查找最大号生成编号
dr = e.DataRow
pf = dr("序号") & "-" & dr("唛头") & "-" '获得编号的前缀
cmd.ConnectionName = Mydata '设置数据源名称
cmd.commandText = "S elect Max(产品编码) From {产品编码} Where 产品编码 Like '" & pf & "%'"
Dim idx As Integer
If cmd.ExecuteScalar > "" Then '如果存在最大编号
Dim cd As String = cmd.ExecuteScalar
Dim sx As Integer = cd.LastIndexOf("-") '取得最后一个分隔符的位置.
idx = Cint(cd.SubString(sx+1)) '将编号中的顺序号转换为整数
idx = idx + 1 '获得最大编号的后三位顺序号,并加1
Else
idx = 1 '否则顺序号等于1
End If
msgbox(idx)
e.DataRow("产品编码") = pf & Format(idx,"00000")