通过事务向SQL Server的表中申请一个临时GUID(全球唯一识别码)值,通过撤消事务而不使该值保存,也就是通过SQL Server产生GUID,从而不需要自己编写复杂的代码来实现这一目的。
Public Function GetGUIDString() As String
' 通过 GUID 表自动产生 GUID 字符串,并借助事务消除对数据库的操作
' GUID 表:GUID 字段为:uniqueidentifier newid() RowGuid 主键
' GuidStr字段为:char(20)
' 作者:朱亦文
Dim rst As ADODB.Recordset
Dim cn As ADODB.Connection
Set cn = CurrentProject.Connection
' 开始数据库的事务
cn.BeginTrans
' 打开一个新的记录集
Set rst = New ADODB.Recordset
With rst
Set .ActiveConnection = cn
' 以键集开放锁打表 GUID 表
.Open "GUID", , adOpenKeyset, adLockOptimistic
' 新增记录
.AddNew
' 向表中的 GuidStr 字段写入数据
.Fields("GuidStr") = "s"
' 更新,此时在表中产生了一新的唯一的 GUID 值
.Update
' 重新获取数据
.Requery
' 返回记录中的 GUID 值并转换成字符
GetGUIDString = StringFromGUID(.Fields("GUID"))
End With
' 关闭记录集,释放 rst 对象
Set rst = Nothing
' 结束事务并取消上述对数据库的操作
cn.RollbackTrans
' 释放连接对象 cn
Set cn = Nothing
GetGUIDString = Mid(GetGUIDString, 2, Len(GetGUIDString) - 2)
End Function
|