DBEngine.BeginTransとDBEngine.Workspaces(0).BeginTransの違い
-
05-07-2019 - |
質問
Accessでは、これら2つのステートメントの違いは何ですか?
DBEngine.BeginTrans
and
DBEngine.Workspaces(0).BeginTrans
両方のドキュメントは同じ場所につながります。
解決 2
自分の答え:
このコードが機能するため、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
他のヒント
こちらをご覧ください: DAOワークスペース
そしてここに: DAOワークスペース:別のトランザクションスペースを開く
(リンクはMFC用ですが、コーディングしているものすべてに適用可能です。)
DBEngine.Workspaces(0)
はデフォルトのワークスペースです。他のワークスペースを作成して、個別のセッションで作業することができます。 BeginTrans
および EndTrans
はワークスペース全体に適用されるという考え方ですが、そのトランザクション以外で何かを行う必要がある場合は、別のワークスペースを作成して、トランザクションとは無関係に使用できます最初のワークスペースで。
個人的に、VBAでDAOを実行するときに複数のワークスペースを使用する機会はありませんでした。 *肩をすくめる*
Accessアプリケーションインターフェイスでは、一度に1つのデータベースコンテナーのみを開くことができます。 VBAコードでは、ワークスペース内で複数のデータベースインスタンスを開くことができます。 Workspace.OpenDatabaseメソッドのヘルプファイルのドキュメントを参照してください(または http:// msdn .microsoft.com / en-us / library / bb243164.aspx )。1つのワークスペースで複数のデータベースが開かれている例。
ワークスペースで開かれているすべての基盤データベースでトランザクションがサポートされている場合、ワークスペースのBeginTransメソッドがすべてのデータベースに適用されると推測されます。そこにはドラゴンがいるのではないかと疑っていますが、1つのワークスペース内の2つのMDBで動作するはずです。ワークスペースで開いているデータベースが1つしかない場合、Workspace.BeginTransとDatabase.BeginTransは実際に同じです。
Spockがかつて言ったように、違いをもたらさない違いは違いではありません...