使用ADO或DAO如何进行事务处理
时 间:2008-07-07 09:46:51
作 者:UMVsoft整理 ID:43 城市:江阴
摘 要:使用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群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 【Access高效办公】统计当...(06.30)
- 【Access高效办公】用复选...(06.24)
- 根据变化的日期来自动编号的示例...(06.20)
- 【Access高效办公】按日期...(06.12)
- 合并列数据到一个文本框的示例;...(05.06)
- 通过命令按钮让Access列表...(04.24)
- 【Access高效办公】统计当...(03.11)
- 【Access Inputbo...(03.03)
- 按回车键后光标移动到下一条记录...(02.12)

学习心得
最新文章
- Access快速开发平台--执行有...(07.03)
- 【Access高效办公】统计当月之...(06.30)
- 【Access高效办公】用复选框控...(06.24)
- 根据变化的日期来自动编号的示例;根...(06.20)
- Access快速开发平台--Acc...(06.16)
- 【Access高效办公】按日期区间...(06.12)
- Access快速开发平台--生成复...(06.07)
- 仓库管理实战课程(25)-导航菜单...(06.06)
- 仓库管理实战课程(24)-库存月结...(06.05)
- 分享一个简单的X氏家谱小示例(06.04)