\'通过Functions.Execute("获取自动编号","表名")使用
\'传入表名,返回这个表当前可用的新自增编号
\'思路参考狐表官方文档《网络环境下的复杂编号》,实测异步并发生成也不会有重复编号
Dim tableName As String = Args(0)
Dim cmd As New SQLCommand
cmd.Co nnecti
cmd.commandText = "Sel ect Count(*) From 自动编号表 Where 表名 = \'" & tableName & "\'"
If cmd.ExecuteScalar = 0 Then \'如果编号表不存在该表名的记录,那么增加一行
cmd.commandtext = "Ins ert Into 自动编号表 (表名, 当前编号) Values(\'" & tableName & "\',1)"
cmd.ExecuteNonQuery
End If
Dim No As Integer
Do
cmd.commandText = "Sel ect 当前编号 From 自动编号表 Where 表名 = \'" & tableName & "\'"
No = cmd.ExecuteScalar() \'从后台获得当前编号
cmd.commandText = "Upd ate 自动编号表 Set 当前编号 = " & (No + 1) & " Where 当前编号 = " & No & " And 表名 = \'" & tableName & "\'"
If cmd.ExecuteNonQuery() > 0 Then \'更新编号
Exit Do \'更新成功,说明编号可用,则退出循环
End If
Loop
Return No
3.在业务表的DataRowAdding事件
e.DataRow("编号") = Functions.Execute("获取自动编号", e.DataTable.Name)
4.即可得到以下效果
此主题相关图片如下:自增编号效果.png