通过事务向mdb的表中申请一个临时GUID(全球唯一识别码)值,通过撤消事务而不使该值保存,也就是通过ACCESS产生GUID,从而不需要自己写代码去实现这一目的。
Public Function GetGUIDString() As String
' 通过 usysGUID 表自动产生 GUID 字符串,并借助事务消除对数据库的操作
' usysGUID 表:GUID 字段为:自动编号 同步复制ID 主键
' GuidStr字段为:char(20)
' 作者:朱亦文
Dim rst As ADODB.Recordset
Dim cn As ADODB.Connection
Set cn = CodeProject.Connection
' 开始数据库的事务
cn.BeginTrans
' 打开一个新的记录集
Set rst = New ADODB.Recordset
With rst
Set .ActiveConnection = cn
' 以键集开放锁打表 GUID 表
.Open "usysGUID", , 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
|