Tabelle nach OutputTo eines Berichts gesperrt

erwin94

Benutzer
Beiträge
7
Hallo Forum,

ich versuche, per OutputTo einen Report in ein Word-Dokument zu konvertieren. Der Report enthält einen Button, der den Export anstößt. Ganz gleich, ob ich über das RTF-Format oder das PDF-Format gehe, nach dem Schließen des Reports ist die zugrunde liegende Tabelle gesperrt, so dass ich die Datenbank erst mal schließen und dann wieder öffnen muss, um die Sperrung aufzuheben. Die hier angefügte TestDB ist ein schmaler Auszug aus einer größeren Umgebung und enthält nur die wesentlichen Teile.

Mit meinem Latein bin ich am Ende. Ich habe schon versucht, die recordsource vorübergehend auf einen Clone der Basistabelle zu legen. Klappt nicht. Auch der Export eines Clones des Reports klappt nicht. Es spielt auch keine Rolle, ob die Ziel-Dateien in Word oder dem Acrobat-Reader geöffnet oder geschlossen sind.

Kann mir jemand helfen?

Vielen Dank im voraus!
Erwin
 

Anhänge

Werbung:
Ich hab kein Access mehr und hab mir demnach die Beispiel DB nicht angeschaut.
Es kann ein Laufzeitproblem sein, also Ausführungsdauer. Sind es viele Seiten? Wie lange laufen die Abfragen ohne Report?
Es kann ein Problem mit dem Code im Report sein oder eine Art Deadlock, der durch anderen Code von Dir entsteht, der aufgerufen wird, während der Report geöffnet ist.
Du könntest auf Prozesse achten, die sich beim Starten des Reports bilden und stehen bleiben (vermehren bei wiederholtem Restart von Access, Aufruf Report). COM Server / OLE Prozesse, die nicht (mehr) richtig arbeiten und im Hintergrund Fehler produzieren und die Locks nicht abräumen, weil sie vorher sterben.
Für Reports gibt es angeblich die Eigenschaft Records Locks, die man im Design Mode auf no locks stellen kann. Was sich m.E. für einen Report sowieso empfiehlt. Kommt auf den Fall an.
 
Der Fehler ist eigentlich logisch. Die Ursache liegt in der jeweils neuen Erzeugung der Tabelle "BefundeFürGutachtenDominanteGK0" über eine Tabellenerstellungsabfrage bevor sie aus dem vorigen Erzeugungsvorgang "entlassen" wurde. Mit der Erzeugung der ZwischenPDF und Worddatei hat das nichts zu tun, weil über das Latebinding eigene neue Anwendungsobjekte erzeugt werden, die die gesperrte Tabelle gar nicht mehr benutzen.
Zwischentabellen zu erzeugen ist eine unschöne Praxis, weil eben so solche Zirkelbezüge in den Sperrmechanismen entstehen können. Wenn schon Zwischentabellen benutzt werden, was ja nicht immer, z.B. aus Performancegründen unumgänglich ist, so kann man besser die Tabelle leeren und mit einer Anfügeabfrage neu füllen.
Ansonsten nutzt man besser jeweils das Ergebnis (Recordset) aufeinander folgender Abfragen um berechnete Ergebnisse dynamisch weiter zu verarbeiten. So stimmen die Ergebnisse immer, auch wenn sich Grunddaten der Berechnung ändern.
 
Hallo dabadpdu,

Es sind zweidrei Seiten im Bericht. Allerdings laufen die Konversionen ziemlich lange (20 Sec.). Deadlock? Könnte sein, aber ist für mich auch mit Tricks bislang nicht lokalisierbar. Ich habe wirklich alles, was mir irgendwie einfiel, versucht, um die Locks abzuräumen: alle Tabellen freigeben, recordsets freigeben, Abfragen dito. Die Eigenschaft Record Locks im Design Mode probiere ich auch noch aus. - Danke für Deinen Beitrag!

Vielleicht möchte jemand sich mal die TestDB genauer anschauen!? Für jeden Tipp bin ich dankbar. Der Fehler ist schwerlich hinnehmbar.

Gruß,
Erwin
 
dabadepdu: Im Bericht ist "Keine Sperrungen" eingetragen.

andyfau: Ich denke, die Serie von Abfragen stellt sich wirklich selber Beinchen. Ich werde das nochmal neu überdenken müssen. Vielleicht kriege ich es dynamisch hin. Auch das Auffüllen statt Neu-Erzeugen könnte hilfreich sein.

Jetzt lasse ich es erst mal auf sich beruhen, und wenn die Zeit kommt, löse ich es. - Danke Euch beiden!
 
Werbung:
Moin Erwin94

ich habe Deine Datenbank einmal laufen lassen und bei mir hat alles einwandfrei funktioniert. Allerdings muss ich dazu sagen, dass ich Win 10 prof und Office 2016 als 32 Bit Anwendung nutze.

Es kam bei mir eine Meldung, dass das PDF Dokument in ein Word Dokument konvertiert wird, wobei die Meldung im Hintergrund lag. Kann das sein, dass das bei Dir auch der Fall war, da durch diese Meldung Access blockiert wird, bis die Meldung bestätigt wurde.
 
Zurück
Oben