Re: transaction und rollback

Tech-Archive recommends: Fix windows errors by optimizing your registry

From: Reiner Wolff (spam_at_wolffsrudel.de)
Date: 12/28/04


Date: Tue, 28 Dec 2004 08:35:17 +0100

Moin Berold,

die Angabe des vollständigen Namens wäre üblich.

*Berold* schrieb:
> ich füge in einer Schleife mehrere Einträge in mehrere Tabelle und lösche
> einige der Tabellen .
> Ich möchte, dass falls wenigstens ein Eintrag in das Datenbank nicht
> eingefügt werden kann, dann alle Änderungen in den Datenbank rückgängig
> machet werden.
> Ich versuche das Problem mit dem folgenden Code zu realisieren, aber der
> Rollback wird nicht ausgeführt.
> Was mache ich falsch???
> Dim db As Database
> 'Set db = CurrentDb.OpenRecordset
> Dim connection As ADODB.connection
> Set connection = New ADODB.connection
> Set connection = CurrentProject.connection
> connection.Execute "begin transaction"
> Schleife
> CurrentDb.Execute SQLstring
> Ende der Schleife
> connection.Execute "commit transaction"

Hier laufen gleich mehrere Dinge nicht richtig:
1.
Versuchst Du die Transaktion in der Verbindung 'CurrentProject.Connection'
zu starten und zu beenden während die Datenänderungen über
'CurrentDB.Execute' laufen. Du musst dafür sorgen, dass die Datenänderungen
über die gleiche Connection durchgeführt werden, da eine Transaktion nicht
Verbindungsübergreifend funktionieren kann.

2.
Du startest die Transaktion mit 'Begin Transaction', die ADODB.Connection
kennt dafür aber einen eigenen Befehl, den ich dafür vorziehen würde
 Connection.BeginTrans
 Connection.CommitTrans
 Connection.RollbackTrans

3.
Du hast keinen Code gepostet, in dem der Rollback durchgeführt werden soll.
Wenn die Codezeile erst später kommen soll, dann kann auch das nicht
funktionieren, weil bereits ein 'Commit' an die Datenbank gesand wurde. Du
musst also abfragen, ob Fehler aufgetreten sind und dann dementsprechend
handeln. Das kannst Du natürlich auch über eine Fehlerabfangroutine
erledigen lassen.

HTH
Greetinx aus Kiel
Reiner

-- 
Wenn Architekten so bauen würden, wie Programmierer Ihre 
Programme machen, könnte ein einziger Specht ganze Städte zerstören. 


Relevant Pages

  • Re: transaction und rollback
    ... > Moin Berold, ... >> ich füge in einer Schleife mehrere Einträge in mehrere Tabelle und ... dann alle Änderungen in den Datenbank rückgängig ... > Versuchst Du die Transaktion in der Verbindung 'CurrentProject.Connection' ...
    (microsoft.public.de.access)
  • transaction und rollback
    ... dass falls wenigstens ein Eintrag in das Datenbank nicht ... Dim connection As ADODB.connection ... Set connection = New ADODB.connection ... Ende der Schleife ...
    (microsoft.public.de.access)
  • Re: Konkurrenzfehler
    ... folgender Code die Verbindung her; von Hand könnte ich ihn nicht ... Access Datenbank in Microsoft Visual Studio ... wäre Deine Frage besser aufgehoben. ... wie Du die Connection zu Deiner DB ...
    (microsoft.public.de.vb.datenbank)
  • Re: vb und mysql connection
    ... dass ich beim öffnen des VB-Projektes die Connection ... >verwendet kann man ohne Probleme ein Recordset von der mysql Datenbank ... >ich die aktive connection und baue eine neue Verbindung auf. ... Damit dürfte das Problem das die verbindung zur MySQL-Datenbank ...
    (microsoft.public.de.vb.datenbank)
  • Re: In der Jet User kicken!?!???
    ... Ganz im Gegenteil! ... > Bedarf kurz eine Verbindung zur Datenbank. ... Mit jedem Öffnen und schliessen einer Connection zur *.mdb müssen Daten ...
    (microsoft.public.de.vb.datenbank)