关于多用户下取最大数的锁定类型
下面是是一个程序样例,在多用户访问的情况下,我要求能正确的执行下面的程序
原来在MaxBm的函数用,我用的是myRs.Open Sql, Conn, 1, 3,这样产生一个问题,如果有多用户执行,这样在Test过程中执行插入时,可能产生iCode重复
我现在打开方式改为了myRs.Open Sql, Conn, 2, 3,是不是能解决问题
解决得到直接解答,而不要给出什么一大堆的链接
Sub Test
iCode = MaxBm()
Sql = "INSERT INTO tablename(Code,Name) Values('" & iCode & "','" & iName & ")"
Conn.Execute(Sql)
End Sub
Public Function MaxBm() As String
Dim myRs As New ADODB.Recordset
Dim Sbm as String
Sql = "SELECT Top 1 Code FROM TabName ORDER BY Code DESC"
myRs.Open Sql, Conn, 2, 3
If myRs.EOF And myRs.BOF Then
Sbm = Cstr(Val(myRs("Code")) + 1)
End IF
myRs.Close
Set myRs = Nothing
MaxBm = Sbm
End Function