質問

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がかつて言ったように、違いをもたらさない違いは違いではありません...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top