在Access中,这两个语句之间的区别是什么?
DBEngine.BeginTrans和
DBEngine.Workspaces(0).BeginTrans这两种方法的文档指向相同的位置。
发布于 2009-01-08 17:02:16
我自己的答案是:
看起来DBEngine.BeginTrans和DBEngine.Workspaces(0).BeginTrans做了同样的事情,因为这段代码可以工作(见下文)。“工作区”是DBEngine的默认成员。
Dim db As Database
Set db = CurrentDb
DBEngine.BeginTrans
db.Execute "Update Table1 SET CITY='Newark'"
DBEngine.Workspaces(0).Rollback发布于 2009-01-07 22:10:33
看看这里:DAO Workspace
然后是这里:DAO Workspace: Opening a Separate Transaction Space
(这些链接是针对MFC的,但它们适用于您正在编写代码的任何内容。)
DBEngine.Workspaces(0)是默认工作区。可以创建其他工作区,这允许您使用单独的会话;其思想是将BeginTrans和EndTrans应用于整个工作区,但如果您需要在该事务之外执行某些操作,则可以创建另一个工作区,并在第一个工作区中独立于事务使用它。
就我个人而言,在VBA中做DAO时,我从来没有机会使用多个工作区。**耸肩**
发布于 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实际上是相同的。
https://stackoverflow.com/questions/422270
复制相似问题