首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DBEngine.BeginTrans与DBEngine.Workspaces(0).BeginTrans的区别

DBEngine.BeginTrans与DBEngine.Workspaces(0).BeginTrans的区别
EN

Stack Overflow用户
提问于 2009-01-07 21:52:14
回答 4查看 7K关注 0票数 6

在Access中,这两个语句之间的区别是什么?

代码语言:javascript
复制
DBEngine.BeginTrans

代码语言:javascript
复制
DBEngine.Workspaces(0).BeginTrans

这两种方法的文档指向相同的位置。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-01-08 17:02:16

我自己的答案是:

看起来DBEngine.BeginTrans和DBEngine.Workspaces(0).BeginTrans做了同样的事情,因为这段代码可以工作(见下文)。“工作区”是DBEngine的默认成员。

代码语言:javascript
复制
Dim db As Database
Set db = CurrentDb

DBEngine.BeginTrans
db.Execute "Update Table1 SET CITY='Newark'"
DBEngine.Workspaces(0).Rollback
票数 2
EN

Stack Overflow用户

发布于 2009-01-07 22:10:33

看看这里:DAO Workspace

然后是这里:DAO Workspace: Opening a Separate Transaction Space

(这些链接是针对MFC的,但它们适用于您正在编写代码的任何内容。)

DBEngine.Workspaces(0)是默认工作区。可以创建其他工作区,这允许您使用单独的会话;其思想是将BeginTransEndTrans应用于整个工作区,但如果您需要在该事务之外执行某些操作,则可以创建另一个工作区,并在第一个工作区中独立于事务使用它。

就我个人而言,在VBA中做DAO时,我从来没有机会使用多个工作区。**耸肩**

票数 7
EN

Stack Overflow用户

发布于 2009-01-10 02:57:14

在Access应用程序界面中,一次只能打开一个数据库容器。在VBA代码中,您可以在一个工作区中打开多个数据库实例。有关在一个工作区中打开多个数据库的示例,请参阅Workspace.OpenDatabase方法(或http://msdn.microsoft.com/en-us/library/bb243164.aspx)的帮助文件文档。

可以推断,当在工作区中打开的所有底层数据库都支持事务时,工作区的BeginTrans方法将应用于所有数据库。我怀疑那里有龙,但我相信它可以在一个工作区内使用两个MDB。当工作区中只有一个打开的数据库时,Workspace.BeginTrans和Database.BeginTrans实际上是相同的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/422270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档