Office: (Office 2003) Transaktionen und CurrentDB()?

Helfe beim Thema Transaktionen und CurrentDB()? in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich habe in meiner Anwendung eine globale Variable Dim db as DAO.Database definiert, welche beim Starten mit set db = CurrentDB... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von sw-blitz007, 8. November 2008.

  1. Transaktionen und CurrentDB()?


    Hallo zusammen,
    ich habe in meiner Anwendung eine globale Variable
    Dim db as DAO.Database
    definiert, welche beim Starten mit
    set db = CurrentDB
    initialisiert wird.
    Alle folgenden Zugriffe auf Recordsets und QueryDefs erfolgen über db.OpenRecordset ....,
    da ich gelesen habe, dass dies die Ausführungsgeschwindigkeit erhöht.
    Denn bei CurrentDB.OpenRecordset wird ja jedesmal eine neue Instanz mit
    CurrentDB angelegt.

    So nun mein Problemchen:

    Wenn ich nun eine Transaktion ausführen möchte, definierte ich lokal in
    einer Prozedur
    Dim ws as DAO.Workspace
    und initialisiere diesen mit
    Set ws = DBEngine.Workspaces(0)
    und beginne die Transaktion mit
    ws.BeginTrans
    So weit so gut.
    Wenn ich nun ein
    ws.CommitTrans
    durchführe, ist meine globale Variable db nicht mehr festgelegt.

    Frage: wird diese durch das Commit gelöscht?

    Wenn ja, wie kann man dies umgehen oder gibt es andere Lösungsansätze?

    Vorab vielen Dank und
    Grüße
    Michael

    :)
     
    sw-blitz007, 8. November 2008
    #1
  2. Siehe mal nach CurrentDbC in Performance in VBA+Formularen.

    Anmerkung: Eine globale Variable wäre mit Public statt Dim sowie in einem allgemeinen Modul zu deklarieren.
     
  3. Hallo Eberhard,
    vielen Dank für Deine Antwort.
    Aus diesem Beitrag habe ich den Hinweis, dass die Verwendung einer
    Variablen schneller ist als jedesmal CurrentDB zu verwenden.
    Mein Problem ist jedoch, dass bei ws.CommitTrans meine Variable db
    nicht mehr gesetzt ist.
    Grüße
    Michael
     
    sw-blitz007, 10. November 2008
    #3
  4. Transaktionen und CurrentDB()?

    Bist du sicher, dass es am Commit liegt? Vielleicht führst du auch ein ws.Close aus.
     
    Josef P., 10. November 2008
    #4
  5. Guten Nabend Michael.

    In einem Modul setzt Du folgendes:

    Code:
    Diese Variante ist A. Schneller! - und - B. Geht CurrentDBC nicht flöten, auch bei nicht abgefangenen Fehlern.

    Ich mag zugeben, das dies nicht Deine Frage beantwortet, ob ws.CommitTrans eine öffentliche Variable löscht. Aber mit o.g. Beispiel erübrigt sich das.

    BTW: Das ist eben ein Nachteil von öffentlichen Variablen, sie können Ihren Inhalt auch verlieren.
     
    SaschaBHH, 10. November 2008
    #5
  6. Ein Beispiel:
    Code:
    [OT]


    Nur damit kein Missverständnis auftritt: die Idee von CurrentDbC stammt von Michael Kaplan.
     
    Josef P., 10. November 2008
    #6
  7. Upps, Sorry...hatte ich vergessen zu erwähnen. Ist geändert! *Smilie
     
    SaschaBHH, 10. November 2008
    #7
  8. Transaktionen und CurrentDB()?

    Hallo zusammen,

    vorab herzlichen Dank für Eure Antworten.

    @josef #4: vor dem ws.CommitTrans kann ich bspw. im Direktfenster noch
    ?Debug.Print db.name aufrufen, direkt nach dem ws.CommitTrans ist das Objekt
    nicht mehr festgelegt und erzeugt den beschriebenen Fehler. Sieht so aus,
    wie Du in #6 beschrieben hat, aber ohne ws.Close. *frown.gif*

    @Sascha: bin gerade dabei diese Lösung umzusetzen und zu testen.
    Na ja, Testen ist wohl übertrieben, hier ist eher Ersetzen angesagt *Smilie

    Das seltsame daran ist, dass ich dies Kontrukt an mehreren Stellen in meinem
    Code verwende und nur an einer Stelle kommt der Fehler?

    Ich lasse den Thread mal bis morgen offen, vielleicht hat noch jemand
    eine Idee. Ansonsten schließe ich ihn. Zwischenzeitlich und baue solange die
    von Josef und Sascha beschriebene Lösung ein.

    Grüße aus dem Schwarzwald *cool.gif*
    Michael
     
    sw-blitz007, 10. November 2008
    #8
  9. Ergibt die Prüfung auf Nothing True?
    Wenn das nämlich ncith der Fall ist, dann bringt dich die CurrentDbC-Variante auch nicht weiter.
    Falls nach CommitTrans die Referenz auf Nothing steht: kommt es bei Commit zu einem Fehler, der nicht abgefangen wird?
     
    Josef P., 10. November 2008
    #9
  10. Hallo nochmals zusammen,

    kurzer Zwischenbericht:
    das Teil bleibt nach Umbau auf ein Objekt CurrentDbC immer noch an derselben
    Stelle hängen.
    Ich habe nun die Objektdefinition folgendermaßen erweitert

    Code:
    Nun läuft es zumindest über die genannte Fehlerstelle weiter.
    Irgendwie seltsam ist dies doch. Ich prüfe und teste nun nochmals die
    identischen Abläufe an den anderen Stellen in meinem Programm.

    Grüße
    Michael
     
    sw-blitz007, 10. November 2008
    #10
  11. Also: CurrentDbC würde ich so belassen. Hat sich doch schon 1000 mal bewährt.

    Vielleicht zeigst Du mal Deinen Code.
     
    SaschaBHH, 10. November 2008
    #11
  12. Hallo *tongue.gif* zusammen,

    Asche über mein *mad.gif* graues Haupt

    Ich habe in meiner Prozedur in den letzten Tagen
    einen größeren Teil komplett auskommentiert - dachte ich zumindest.
    Doch leider war darin ein ws.Close mit noch einigen Traceausgaben noch aktiv,
    welches ich testweise mal eingefügt habe und gänzlich übersehen habe zu löschen.

    Sorry für die Verwirrungen - eine bessere Vorabprüfung meinerseits hätte dies verhindert.

    3 Dinge habe ich heute gelernt / verinnerlicht:
    1. niemals Prozeduren schreiben, welche mehr Zeilen haben, wie der Bildschirm hergibt.
    (Dies wurde mir eigentlich schon an der Uni beigebracht *wink.gif* , erinnere ich mich nun)
    2. doch immer mit 'F8' durch den gesamten Code gehen und nicht nur Breakpoints setzen
    3. vor dem Hilfeschrei lieber nochmals prüfen

    Es geht sowohl die globale Zuweisung Set db = CurrentDB,
    wie auch die Lösung von Michael Kaplan.

    Josef und Sascha - vielen Dank, noch einen schönen Restabend
    und liebe Grüße

    Michael (derzeit etwas zerknirscht *frown.gif* )
     
    sw-blitz007, 10. November 2008
    #12
Thema:

Transaktionen und CurrentDB()?

Die Seite wird geladen...
  1. Transaktionen und CurrentDB()? - Similar Threads - Transaktionen CurrentDB

  2. SAP Transaktion m. Zeichnung aufrufen

    in Microsoft Excel Hilfe
    SAP Transaktion m. Zeichnung aufrufen: Guten Morgen in die Runde, vllt könnt ihr mir mal wieder helfen! Generell erst mal die Frage, ob mein Anliegen überhaupt funktioniert? Ich habe eine Excel-Tabelle mit Art.Nr.(untereinander...
  3. Microsoft Access und seine Mehrbenutzerfähigkeiten in Bezug auf Transaktionen

    in Microsoft Access Hilfe
    Microsoft Access und seine Mehrbenutzerfähigkeiten in Bezug auf Transaktionen: Hallo zusammen ! ich habe mal eine Frage zu MS Access (diese betrifft eigentlich eine gängigen Versionen von MS Access). Der MS SQL Server von Micorosft unterstützt ja implizite und explizite...
  4. SAP-Transaktion mit Parameter

    in Microsoft Access Hilfe
    SAP-Transaktion mit Parameter: Hallo, wie kann ich aus Access eine SAP-Transaktion (z.B. 'VA03') mit einem Parameter (z.B. Auftragsnummer: '200015647') starten? Vielleicht per SendKeys... Vielen Dank, Mike 269114
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden