collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 49
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 1

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13754
  • stats Beiträge insgesamt: 62828
  • stats Themen insgesamt: 8540
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Autor Thema: OutputTo..... Alternative?  (Gelesen 2514 mal)

Offline datekk

  • Access-Meister
  • ***
  • Beiträge: 670
OutputTo..... Alternative?
« am: März 09, 2017, 09:20:03 »
Hallo,

mir raufen sich die Haare.... Ich bekomme die Kriese mit der OutputTo Funktion.....

Ziel: ich möchte einen Bericht speichern. Jedoch funktioniert OutputTo nicht zuverlässig. Die Funktion läuft Wochenlang ohne Probleme und dann schlagartig bricht sie immer mit der alles sagenden Fehlermeldung ab: 2501: Die Aktion OutputTo wurde abgebrochen.

Ich habe in meiner Programmierung alle Fehlerquellen beseitigt, achte auf korrekte Dateinamen, das Ausgabeziel ist immer gleich. Dennoch, wenn die Fehlermeldung auftaucht hilft nur das Beenden der kompletten Access Datenbank. Nach einem Neustart der Datenbank läuft OutputTo wieder für ein/zwei mal um dann wieder den Dienst mit o.g. Fehler zu quittieren und das Spiel beginnt von vorn.

Gibt es eine Alternative zu OutputTo, denn ich kann diese Funktion bald nicht mehr sehen. Seit nem halben Jahr habe ich immer wieder Probleme damit. Wenn alles läuft, macht OutputTo Stress. Das kann doch nicht sein....  >:(  >:(  >:(

 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23047
Re: OutputTo..... Alternative?
« Antwort #1 am: März 09, 2017, 09:32:11 »
Hallo,

zeig halt mal die (komplette)  Prozedur....

Wird denn der Bericht selber bei manuellen Aufruf mit den entspr. Kriterien korrekt "gespeichert" (was meinst Du damit? Als PDF exportiert, in eine Druckdatei gespeichert, oder einfach ausgedruckt?).

Offline datekk

  • Access-Meister
  • ***
  • Beiträge: 670
Re: OutputTo..... Alternative?
« Antwort #2 am: März 09, 2017, 10:47:05 »
Hallo Franz,

DoCmd.OpenReport "Auftragsformular", acViewPreview, , "AngebotAuftrag_ID =" & v_DatensatzID, acHidden, Me.Formularwahl
Wait 1
DoCmd.OutputTo acOutputReport, "Auftragsformular", acFormatPDF, strDateiPfadundName, False

Das Problem ist, dass es mal geht und mal nicht. Kann man OutputTo nicht irgendwie anders Programmieren?
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23047
Re: OutputTo..... Alternative?
« Antwort #3 am: März 09, 2017, 11:18:21 »
Hallo,

wozu brauchst Du Wait 1?

Ist sichergestellt, dass "v_DatensatzID"  immer richtigen Inhalt (also kein NULL z. B) hat? (Wie und Wo ist diese Variable deklariert?)
Ist sichergestellt , dass "Me.Formularwahl" immer einen Wert enthält und der auch richtig im Bericht verarbeitet wird?
Ist sichergestellt, dass der Report auch wieder geschlossen (entladen) wird?


Ansonsten schreib mal:

DoCmd.OpenReport "Auftragsformular", acViewPreview, , "AngebotAuftrag_ID =" & v_DatensatzID, acHidden, Me.Formularwahl
Wait 1
Docmd.SelectObject acReport ,"Auftragsformular"
DoCmd.OutputTo acOutputReport, "Auftragsformular", acFormatPDF, strDateiPfadundName, False
Docmd.Close acReport, ,"Auftragsformular"


Ich gehe jetzt mal davon aus, dass
-- in ALLEN Modulköpfen "Option Explicit" steht
-- Die DB unter VBA/Debuggen/ Kompilieren   fehlerfrei kompiliert wurde.

Tipps:  eindeutige Prefixe bei Namen verwenden ("Auftragsformular" --> "rpt_Auftragsformular",  etc)


Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 771
Re: OutputTo..... Alternative?
« Antwort #4 am: März 09, 2017, 11:55:10 »
... und wenn im Bericht z. Bsp. bei beim Ereignis NoData gecancelt wird, tritt besagter Fehler 2501 auch auf, um dem Benutzer die Möglichkeit zu geben, im aufrufenden Code darauf zu reagieren.
Grüße von der (⌒▽⌒)
 

Offline datekk

  • Access-Meister
  • ***
  • Beiträge: 670
Re: OutputTo..... Alternative?
« Antwort #5 am: März 09, 2017, 16:53:20 »
Wait 1: Das habe ich mal rein gemacht um sicher zu gehen, dass der Bericht seine Daten vollständig laden kann. Dieser läd auch Grafiken anhand von Berichtsdaten. Daher das Wait. Der Bericht soll ja auch Zeit zum speichern haben und nicht sofort wieder geschlossen werden. Das Wait ist ein Versuch OutputTo fehlerfrei durchzuführen.. Mit mäßigem bzw. ohne Erfolg. Hab auch schon Wait 5 probiert... hilft nix.

Weiterhin ist alles sichergestellt was Du geschrieben hast. Ich arbeite am gleichen Datensatz! Einmal geht es, einmal nicht, dann starte ich Access neu, rufe wieder den gleichen Datensatz auf und es geht wieder... Ich habe mir auch zur Fehlersuche alle Werte vorab mit debug.print ausgeben lassen. Der Bericht wird auch immer richtig entwickelt. Ich habe auch eine Vorschau-Funktion.. Der Fehler tritt nur bei OutputTo - also beim speichern auf. Es könnte ein Speicherfehler sein. Vor einiger Zeit erhielt ich noch die Meldung, dass zu wenig Speicher vorhanden ist. Aber auch hier konnte ich nicht feststellen, welcher Speicher gemeint ist. Ggf. nutzt die OutputTo Methode einen Speicherbereich, der irgendwie und irgendwann voll läuft. Manchmal hilft es auch, Programme wie Browser oder so zu schließen, dann läuft es wieder. Es ist halt total seltsam. Auch habe ich die Datenbank bereits in eine neue Datenbank geladen - mehrfach... Irgendwann kommt immer dieser Fehler.

Das Vorgehen ist immer gleich, die Reaktion von OutputTo aber nicht. Wie gesagt, ich arbeite seit einem halben Jahr an der Lösung und bin schon alles mögliche durchgegangen. Mal läuft es über Wochen fehlerfrei, dann beginnt wieder die Fehlerserie. Daher nochmal die Frage: kann man die OutputTo Funktion anderweitig nachstellen?

Falls es keinen Weg mit Access / VBA geben sollte, wäre auch das Erstellen, Abrufen und Speichern eines Berichts direkt über den SQL Server möglich? Mein Backend beruht nämlich auf einen SQL Server. Die Tabellen sind über OLEDB eingebunden.
« Letzte Änderung: März 09, 2017, 17:16:07 von datekk »
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23047
Re: OutputTo..... Alternative?
« Antwort #6 am: März 09, 2017, 19:00:16 »
Hallo,

hast Du den Code-Vorschlag mal getestet?

Speziell die Close-Methode angewendet?

Access benutzt tatsächlich einen bestimmten  und begrenzten (wie groß weiß ich jetzt nicht) RAM-Speicherbereich, um die Berichte aufzubauen und zwischen zu speichern. Dieser Speicher läuft über , wenn zu viele Bericht-Instanzen generiert werden oder massenhaft große Bilder im Bericht enthalten sind.

Deshalb ist die Close-Methode unbedingt erforderlich.  Das Wait hat m. E. keinen Einfluss auf den Ladevorgang des Berichtes.


Nutzt Du an anderen Stellen auch die Methodik, einen Bericht versteckt zu laden und ihn dann auszudrucken, ohne den Bericht anschließend wieder zu schließen (entladen)?

Möglichweise haben auch an anderer Stelle nicht geschlossene und "zerstörte" Recordsets Einfluss.

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1848
Re: OutputTo..... Alternative?
« Antwort #7 am: März 10, 2017, 08:39:34 »
Hi,

welche access-Version nimmst Du?

Harald
Servus
 

Offline datekk

  • Access-Meister
  • ***
  • Beiträge: 670
Re: OutputTo..... Alternative?
« Antwort #8 am: März 10, 2017, 08:58:21 »
Hallo Franz,

ja, ich habe den Bericht schon immer geclosed, hatte die Zeile nur nicht mit kopiert. Allerdings hatte ich nicht vorher die Select-Anweisung. Das probiere ich mal aus. Es werden auch nicht massenhaft riesen Bilder reingeladen sondern lediglich kleine GIF-Grafiken / Piktogramme. An anderen Stellen wird der Bericht nicht versteckt geöffnet, das mache ich nur, um Ihn gleich als fertige PDF auch anzeigen zu lassen.

Zitat
DoCmd.OpenReport "Auftragsformular_nach_Ausgabe", acViewPreview, , "AngebotAuftrag_ID =" & v_DatensatzID, acHidden, Me.Formularwahl
Wait 1
DoCmd.OutputTo acOutputReport, "Auftragsformular_nach_Ausgabe", acFormatPDF, strDateiPfadundName, False
Wait 1
DoCmd.Close acReport, "Auftragsformular_nach_Ausgabe"
Wait
FollowHyperlink strDateiPfadundName

@Harald: Access 2016
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1848
Re: OutputTo..... Alternative?
« Antwort #9 am: März 10, 2017, 10:10:48 »
Hi,

mir raufen sich die Haare....

dann hast Du ja wenigstens noch welche ...


Ich schlage mich mit dem gleichen Problem unter a2007 rum, wobei das bereits bei der normalen Anzeige des Berichtes auftritt.

Habe eben etwas gefunden, aber noch nicht getestet:
http://www.access-basics.de/index.php/Bericht_als_PDF_speichern.html

Dort wird u.a. auf Lebans verweisen, was schon mal recht viel versprechend klingt.
Vielleicht ist diese Convert-Methode auch bei >a2003 brauchbar.

Harald
Servus
 

Offline Wurliwurm

  • Access-Profi
  • **
  • Beiträge: 360
Re: OutputTo..... Alternative?
« Antwort #10 am: März 10, 2017, 10:29:02 »
Wait 1: Das habe ich mal rein gemacht um sicher zu gehen, dass der Bericht seine Daten vollständig laden kann. Dieser läd auch Grafiken anhand von Berichtsdaten. Daher das Wait. Der Bericht soll ja auch Zeit zum speichern haben und nicht sofort wieder geschlossen werden. Das Wait ist ein Versuch OutputTo fehlerfrei durchzuführen.. Mit mäßigem bzw. ohne Erfolg. Hab auch schon Wait 5 probiert... hilft nix.

Das WAIT bringt wirklich nichts, weil die Verarbeitung der Reports im gleichen Thread stattfindet und er sowie erst wieder zurückkehrt, wenn die DOCMD-Anweisung verarbeitet ist.
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1848
Re: OutputTo..... Alternative?
« Antwort #11 am: März 10, 2017, 18:49:47 »
Hi,

Nachtrag zum obigen Eintrag:
Die Lebans Routinen http://www.lebans.com/reporttopdf.htm funktionieren unter access2003 und win7 (64Bit).
Auch Bilder werden in die erstellte pdf-Datei übertragen.


Als weitere Alternative ist es u.U. auch möglich, einen pdf-Druckertreiber zu verwenden, um den Bericht als pdf-Datei zu speichern.

Harald
« Letzte Änderung: März 11, 2017, 06:21:40 von bahasu »
Servus
 

Offline datekk

  • Access-Meister
  • ***
  • Beiträge: 670
Re: OutputTo..... Alternative?
« Antwort #12 am: März 16, 2017, 09:43:19 »
Also Danke für Eure Antworten, aber es wird immer kurioser:

Ich habe die OutputTo Funktion durch die "Lebans" Funktion ersetzt. Dennoch erhalte ich wieder die Fehlermeldung "OutputTo wurde abgebrochen". Setze ich einen Haltepunkt und gehe die Funktion Schritt für Schritt durch, wird die Lesbans Funktion ausgeführt. Allerdings wird dann von meinem etwa 3-seitigen Bericht nur die erste halbe Seite ausgegeben.

Hat jemand eine Erklärung für dieses merkwürdige Verhalten?
 

Offline datekk

  • Access-Meister
  • ***
  • Beiträge: 670
Re: OutputTo..... Alternative?
« Antwort #13 am: März 16, 2017, 10:04:03 »
Okayyyy, bin gerade den Code der Lebans-Funktion durchgegangen und musste feststellen, dass diese Funktion auch auf die OutputTo Funktion zurückgreift, und diese auch an dieser Stelle den Fehler wohl verursacht...

    ' Export the selected Report to SnapShot format
    DoCmd.OutputTo acOutputReport, RptName, "SnapshotFormat(*.snp)", _
       strPathandFileName
    ' Make sure the process has time to complete
    DoEvents
 

Offline Wurliwurm

  • Access-Profi
  • **
  • Beiträge: 360
Re: OutputTo..... Alternative?
« Antwort #14 am: März 16, 2017, 17:05:12 »