Hallo,
ich möchte - recht banal - Werte in einer Tabelle austauschen. Per VBA werden zunächst 2 Hilfstabellen gefüllt, die eigentliche Arbeit soll am Ende des Codes eine Aktualisierungsabfrage erledigen: Set qry = cdb.QueryDefs('qupdMeineAbfrage') qry.Parameters('p1') = TempVars(conUser).Value On Error Resume Next qry.Execute dbFailOnError If Err.Number = 0 Then MsgBox "Die gewünschten Werte wurden ersetzt!", vbInformation, conAppName Else MsgBox "Beim Ersetzen der Werte ist ein Fehler aufgetreten!", vbCritical, conAppName End If Problem: Die Abfrage wird zwar ohne Fehler ausgeführt, änder aber nichts an den Daten. Die selbe Abfrage - unmittelbar danach - per Hand ausgeführt, ändert die Daten genaus so wie beabsichtigt. Da ich die Erfahrung gemacht habe, dass cdb.execute noch ausgeführt wird, während der Code schon weiterläuft (was oftmals zu Problemen führt), habe ich den vorherlaufenden Code (Anfüge- und Aktualisierungsabfragen) in eine Transaktion verpackt (so dass sichergestellt ist, das er fertig abgearbeitet wurde. Ich habe auch diese Abfrage in eine Transaktion gepackt: wrk.CommitTrans wird ausgeführt, nur Daten werden nicht geändert. Die Abfrage selbst verbindet über INNER JOINS 6 Tabellen und enthält - neben dem Parameter mit einem zu schreibenden Wert (s.o.) -nur noch ein Filterkriterium. Der Parameter wird übrigens richtig gesetzt. In einer Vorabfrage ist eine Funktion untergebracht, die ein ReplikationsID-Feld in einen String umwandelt.
Hat jemand eine Idee, wo hier das Problem liegen könnte? Besten Dank schon mal vorab!
|