ACCESS数据库不支持事务 *** 作,但是我们可以通过ado类库实现对access数据库的事务 *** 作。
下面举例示范ADO类库实现对ACCESS数据库的事务 *** 作供参考。注意下列VBA代码需要先引用ADO类库
假设有一个团队表teams和团员表members,每个团队编号下面都有自己的团员名单,我们每向团员表添加一位团员时,团队表相应团号的人数就要增加一人,这样就需要进行两个 *** 作,一是团员表追加一条记录,二是团队表对应团队的人数更新为增加一人,这两个 *** 作必须要么全部成功,要不就全部失败,不得存在中间状态,否则记录就不正确了。如何实现?代码如下:
Private Sub Command0_Click()On Error GoTo Err_Command0_Click
Dim cn As ADODB.Connection
Set cn = CurrentProject.Connection
cn.BeginTrans '开始执行事务
'向团员表添加一位团员
cn.Execute "insert into members(gid,m_name) values(" & 团队号码 & ",'" & 团员名称 & "')"
'相应id团队的人数增加1人
cn.Execute "update teams set pax=IIf(IsNull(pax),0,pax)+1 where gid=" & 团队号码
cn.CommitTrans '结束事务,确保上述两个 *** 作不会出现一个成功而另一个失败的状况
MsgBox "团员添加成功"
Exit_Command0_Click:
Exit Sub
Err_Command0_Click:
MsgBox Err.Description
Resume Exit_Command0_Click
End Sub
1、优化代码仔细检查一下数据库代码是否写的规范,把多余的打开和关闭都搞掉.。2、修改服务器的注册表,把access的连接线程加大(可能是叫线程吧),如此一来速度会更块.对服务器影响很小.。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)