DBEngine.BeginTrans和DBEngine.Workspaces(0)之间的区别.BeginTrans

Sha*_*kin 6 ms-access transactions

在Access中,这两个语句有什么区别?

DBEngine.BeginTrans
Run Code Online (Sandbox Code Playgroud)

DBEngine.Workspaces(0).BeginTrans
Run Code Online (Sandbox Code Playgroud)

两者的文档都指向同一个地方.

Rya*_*ndy 7

看看这里: DAO Workspace
然后在这里: DAO Workspace:打开一个单独的交易空间

(链接适用于MFC,但它们适用于您编写的任何内容.)

DBEngine.Workspaces(0)是默认工作区.可以创建其他工作区,使您可以使用单独的会话; 这个想法是,BeginTransEndTrans适用于整个工作空间,但如果你需要做的东西,事务外,你可以创建另一个工作区,并在第一工作区独立您的交易中使用它.

就个人而言,在VBA中执行DAO时,我从未有过使用多个工作区的机会.*耸肩*


Sha*_*kin 2

我自己的回答:

看来 DBEngine.BeginTrans 和 DBEngine.Workspaces(0).BeginTrans 做了同样的事情,因为此代码有效(见下文)。“Workspaces”是DBEngine的默认成员。

Dim db As Database
Set db = CurrentDb

DBEngine.BeginTrans
db.Execute "Update Table1 SET CITY='Newark'"
DBEngine.Workspaces(0).Rollback
Run Code Online (Sandbox Code Playgroud)