使用ADO或DAO如何进行事务处理-金宇
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> ADP及SQL SERVER


使用ADO或DAO如何进行事务处理

发表时间:2008/7/7 9:46:51 评论(1) 浏览(10840)  评论 | 加入收藏 | 复制
   
摘 要:使用ADO或DAO如何进行事务处理
正 文:

在Access中,用ADO或DAO打开记录集之后,就可以开始事务
beginTrans
SQL语句

commitTrans
在beginTrans与commitTrans之间的所有语句,只要有一句执行失败,所有已执行的语句都会不生效。这种常用在同时操作几个表的情况下使用,以免造成数据有关联的几个表的数据不相符。

事务用一句话来概括就是:全有或全无;要么全部生效,要么全部不生效。

-------------------------------------------------------------------------------------
Public Sub BeginTransX()

Dim cnn1 As ADODB.Connection
Dim rstTitles As ADODB.Recordset
Dim strCnn As String
Dim strTitle As String
Dim strMessage As String

' 打开连接。
Set strcnn=currentproject.connection
Set cnn1 = New ADODB.Connection
cnn1.Open strCnn

' 打开 Titles 表。
Set rstTitles = New ADODB.Recordset
rstTitles.CursorType = adOpenDynamic
rstTitles.LockType = adLockPessimistic
rstTitles.Open "titles", cnn1, , , adCmdTable

rstTitles.MoveFirst
'开始事务
cnn1.BeginTrans

' 在记录集中循环并询问是否想要更改指定标题的类型。
Do Until rstTitles.EOF
If Trim(rstTitles!Type) = "psychology" Then
strTitle = rstTitles!Title
strMessage = "Title: " & strTitle & vbCr & _
"Change type to self help?"

' 更改指定雇员的标题。
If MsgBox(strMessage, vbYesNo) = vbYes Then
rstTitles!Type = "self_help"
rstTitles.Update
End If
End If

rstTitles.MoveNext
Loop

' 询问用户是否想提交以上所做的全部更改。
If MsgBox("Save all changes?", vbYesNo) = vbYes Then
'如果回答是,就结束事务
cnn1.CommitTrans
Else
'如果回答否,就回滚事务,取消所有操作
cnn1.RollbackTrans
End If
rstTitles.Close
cnn1.Close

End Sub


Access软件网交流QQ群(群号:198465573)
 
 相关文章
[ADO教程]用ADO进行切断式操作批量更新  【漏蛧尐魚℡  2013/5/11】
DAO与ADO格式  【小赵  2013/5/24】
【译文】把DAO代码转化为ADO  【周芳(转)  2013/6/4】
ADOReport  【收藏示例  2013/6/4】
ADO, DAO, DoCmd.RunSQL 三种方式用哪一种?  【缪炜  2013/7/19】
常见问答
技术分类
相关资源
文章搜索
关于作者

金宇

文章分类

文章存档

友情链接