Nossi
Captain
- Registriert
- Okt. 2002
- Beiträge
- 3.893
Wenn man der MSDN, den 500.000 ersten Googleeinträgen, diversen Foren, Tutorials und Büchern glauben schenken mag, dann sind Transaktionen die einfachste Sache der Welt. Daher werde ich langsam ein wenig ärgerlich, dass so gut wie jeder für eine Transaktion nicht mehr wie 10 Zeilen schreiben muss, nur bei mir scheint dies auf Teufel komm raus nicht zu klappen.
lquery ist hierbei sowas wie "delete from tabelle where name = 'test'".
Das Problem ist folgenermaßen:
Er ignoriert den Rollback. Ich bekomme keine Fehlermeldung, er aktzeptiert jede Zeile Code die dort steht, er geht, wenn ich bei der msgbox auf "Nein" klicke brav in den dafür vorgesehenen Zweig mit gConnection.rollbacktrans hinein - er führt die ganze Geschichte aber trotzdem aus.
Wenn also jemand weiß warum der Kram nicht funktioniert wäre ich ihm echt dankbar, ich bin langsam ein klein wenig genervt...
Ok, ich habs jetzt...
Ich habe ursprünglich als Provider im Quellcode MSDASQL ausgewählt. Da ich hier aber an einer Sybase Datenbank arbeite hat ein einfaches wechseln auf ASAprov das Problem gelöst.
Code:
If Left(LCase(lquery), 6) = "delete" Or _
Left(LCase(lquery), 6) = "update" Or Left(LCase(lquery), 6) = "insert" Then
' Bei Insert, Update und Delete wird eine Transaktion gestartet
Transaction = True
gConnection.BeginTrans
gConnection.Execute lquery
If MsgBox("Änderungen übernehmen?", vbYesNo) = vbYes Then
gConnection.CommitTrans
Else
gConnection.RollbackTrans
End If
Else
' Bei select wird eine herkömmliche Abfrage gestartet
Transaction = False
rsQuery.Open lquery, gConnection
End If
lquery ist hierbei sowas wie "delete from tabelle where name = 'test'".
Das Problem ist folgenermaßen:
Er ignoriert den Rollback. Ich bekomme keine Fehlermeldung, er aktzeptiert jede Zeile Code die dort steht, er geht, wenn ich bei der msgbox auf "Nein" klicke brav in den dafür vorgesehenen Zweig mit gConnection.rollbacktrans hinein - er führt die ganze Geschichte aber trotzdem aus.
Wenn also jemand weiß warum der Kram nicht funktioniert wäre ich ihm echt dankbar, ich bin langsam ein klein wenig genervt...
Ergänzung ()
Ok, ich habs jetzt...
Ich habe ursprünglich als Provider im Quellcode MSDASQL ausgewählt. Da ich hier aber an einer Sybase Datenbank arbeite hat ein einfaches wechseln auf ASAprov das Problem gelöst.