Unterschied zwischen DBEngine.BeginTrans und DBEngine.Workspaces(0).BeginTrans
In Access, was ist der Unterschied zwischen diesen beiden Aussagen?
DBEngine.BeginTrans
und
DBEngine.Workspaces(0).BeginTrans
In der Dokumentation für beide führt an der gleichen Stelle.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben einen Blick hier: DAO-Arbeitsbereich
Und dann hier: DAO-Arbeitsbereich: Eröffnung einer Separaten Transaktion
(Die links sind für den MFC, aber Sie sind anwendbar auf was auch immer Sie Kodieren.)
DBEngine.Workspaces(0)
ist der Standard-Arbeitsbereich. Andere Arbeitsbereiche können erstellt werden, die Ihnen das arbeiten mit getrennten Sitzungen; die Idee ist, dassBeginTrans
undEndTrans
gelten für den gesamten Arbeitsbereich, aber wenn Sie benötigen, um Dinge zu tun, die außerhalb dieser Transaktion, die Sie erstellen können ein weiterer Arbeitsbereich, und verwenden Sie es unabhängig von Ihrer Transaktionen in den ersten Arbeitsbereich.Persönlich, ich hatte nie Gelegenheit mit mehr als einem Arbeitsbereich, wenn dabei auf DAO im VBA. * shrug *
Meine eigene Antwort:
Scheint es, dass DBEngine.BeginTrans und DBEngine.Workspaces(0).BeginTrans die gleiche Sache zu tun, weil dieser code funktioniert (siehe unten). "Arbeitsbereiche" ist das Standard-Mitglied des DBEngine.
In der Access-Anwendung-Schnittstelle, Sie können nur eine Datenbank-container öffnen zu einer Zeit. Im VBA-code, den Sie öffnen können mehrere Datenbank-Instanzen in einem Arbeitsbereich. Finden Sie in der Hilfe-Datei der Dokumentation, die für den Arbeitsbereich.OpenDatabase-Methode (oder http://msdn.microsoft.com/en-us/library/bb243164.aspx) für ein Beispiel, wo mehr als eine Datenbank geöffnet ist, in einem Arbeitsbereich.
Würde man folgern, dass, wenn Transaktionen unterstützt werden, indem alle zugrunde liegenden Datenbanken, die geöffnet sind in einem Arbeitsbereich, der BeginTrans-Methode der Arbeitsbereich gelten würde, die über alle Datenbanken. Ich vermute, dass es Drachen gibt, aber ich bin mir sicher, dass es funktionieren würde mit zwei MDBs innerhalb eines Workspace. Wenn es nur eine Datenbank öffnen in den Arbeitsbereich, Arbeitsbereich.BeginTrans-Anweisungen und Datenbank.BeginTrans sind ja die gleichen.
Als Spock sagte einmal, ein Unterschied, der keinen Unterschied macht keinen Unterschied...