collapse

* Benutzer Info

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

* Wer ist Online

  • Punkt Gäste: 64
  • Punkt Versteckte: 2
  • Punkt Mitglieder: 5
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 14065
  • stats Beiträge insgesamt: 67510
  • stats Themen insgesamt: 9098
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: mehrere geöffnete Berichte drucken  (Gelesen 2504 mal)

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1333
Re: mehrere geöffnete Berichte drucken
« Antwort #15 am: Februar 11, 2018, 17:47:16 »
Mögliche Ablauffolge:
* Standarddrucker merken
* anderen Drucker als Standarddrucker festlegen
* Berichte drucken
* Standdarddrucker zurücksetzen

Hier in einem Formular-Modul realisiert.Private Declare PtrSafe Function SetDefaultPrinterW Lib "winspool.drv" ( _
    ByVal pszPrinter As LongPtr) As Long

Private m_OldDefaultPrinter As String

Private Sub Form_Load()
   'Standarddrucker merken
   m_OldDefaultPrinter = Application.Printer.DeviceName
End Sub

Private Sub Form_Unload(Cancel As Integer)
   'Standarddrucker zurücksetzen
   SetDefaultPrinterW StrPtr(m_OldDefaultPrinter)
End Sub

'Kombifeld mit Druckernamen
Private cboChangeDefaultPrinter_AfterUpdate()
   'neuen Standarddrucker festlegen
   SetDefaultPrinterW StrPtr(Me.cboChangeDefaultPrinter)
End Sub
Nach Auswahl des Druckers im Kombifeld, Bericht(e) ganz normal drucken oder in der Seitenvorschau anzeigen.

Und natürlich überall eine Fehlerbehandlung einbauen, damit beim Schliueßen des Formulars auch der ursprüngliche Standarddrucker wieder erfolgreich zurückgesetzt werden kann.
Grüße von der (⌒▽⌒)
 

Online DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23444
Re: mehrere geöffnete Berichte drucken
« Antwort #16 am: Februar 11, 2018, 18:35:44 »
Hallo,

m. E. muss die Printer-Eigenschaft funktionieren... Das Umswitchen des Standard-Druckers war in älteren A-Versionen erforderlich und sollte durch die vor einiger Zeit neu eingeführte Printers-Auflistung nicht mehr nötig sein.

Zudem gibt es auch noch die Einstellung "Spezieller Drucker", um einen Bericht permanent einen bestimmten Drucker zuzuweisen.


Zitat
Nun ist der Bericht nach dem ersten cmd (,acHidden) wieder durch den 3. Satzt cmd (SelectObject...)  wieder sichtbar und da bleibt er stehen, Kein Druck und kein schließen des Bericht.

Ist ein "gültiger" Druckername ausgewählt? 
Wurde die DB nach Fehlern nochmal neu gestartet? Es könnte sein, dass manche Berichte noch unsichtbar geöffnet sind.


Wenn es immer noch nicht geht, lad mal eine abgespeckte Version hier gezippt hoch.




Offline Icemann1970

  • Access-Profi
  • **
  • Beiträge: 182
Re: mehrere geöffnete Berichte drucken
« Antwort #17 am: Februar 11, 2018, 18:44:07 »
@ Franz: AC2013 und das cmbPrinter hat den Datensatzherkunft auf "Wertliste" stehen. Angezeigt bekomme ich die auch, nach Auswahl. Hatte zusätzlich zur "kontrolle" ein Textfeld zum Anzeigen eingefügt. Die Abfrage mit "MsgBox Me.cmbPrinter" zeigt hinter Private Sub Drucken_Click()
If Me.Kategorie = "LKW" Then

DoCmd.OpenReport "BerichtChecklisteLKW", acPreview,  ,  "[GeräteNummer] = '" & Me![GeräteNummer] & "'", acHidden
den ausgewählten Drucker an. Hinter Reports!BerichtChecklisteLKW.Printer = Application.Printers(Me!cmbPrinter) kommt dann schon nichts mehr.
Mfg. Udo
 

Online DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23444
Re: mehrere geöffnete Berichte drucken
« Antwort #18 am: Februar 11, 2018, 18:48:22 »
Hallo,

Fülle mal das Kombi so, wie hier beschrieben:  http://www.donkarl.com/?FAQ5.1

und lad die DB hier hoch....

PS: noch ein Hinweis:   Möglicherweise mag die Printers-Auflistung keinen Variant-Wert als Index. Insofern  schreib:

....=Application.Printers(CStr(Me!cmbPrinter))

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1333
Re: mehrere geöffnete Berichte drucken
« Antwort #19 am: Februar 11, 2018, 19:10:34 »
@Franz,

zur Zuweisung eines speziellen Druckers an einen Bericht muss AFAIK der Bericht im Design-Modus geöffnet vorliegen, was z. Bsp. von keiner MDE/ACCDE bewältigt werden kann.
Grüße von der (⌒▽⌒)
 

Offline Icemann1970

  • Access-Profi
  • **
  • Beiträge: 182
Re: mehrere geöffnete Berichte drucken
« Antwort #20 am: Februar 11, 2018, 19:33:14 »
Juhuuuuu..... FRANZ, mein Held.... die andern natürlich auch.  ;D
So machte es spaß, zusammen mit euch den Kopf (meinen Kopf) rauchen zu lassen.
Dein Hinweis:
Möglicherweise mag die Printers-Auflistung keinen Variant-Wert als Index. Insofern  schreib:

....=Application.Printers(CStr(Me!cmbPrinter))

war die Lösung.

p.s.: @Lachtaube, deinen Code werde ich mir auch mal anschauen !

Vielen vielen vielen Dank Euch allen.
Mfg. Udo
 

Online DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23444
Re: mehrere geöffnete Berichte drucken
« Antwort #21 am: Februar 11, 2018, 19:34:32 »
Hallo,

ja, das stimmt,  deshalb sagte ich  ja auch "permanent"  ;)

Das ist auch nur als weitergehende Alternative zu verstehen und geht zugegebenermaßen etwas am Thema bzgl. der Druckerauswahl vorbei.

@ Icemann1970:  na denn  ....   ;D

Offline Icemann1970

  • Access-Profi
  • **
  • Beiträge: 182
Re: mehrere geöffnete Berichte drucken
« Antwort #22 am: Juni 10, 2018, 11:51:12 »
Hallo zusammen. Die Drucker Auswahl und Druckfunktion funktioniert, habe aber ein Schönheitsfehler im Code. Hinweis: Aufgeteilte DB (BE/FE), die BE ist auf Netzwerk, Das Netzwerk wird jede Nacht neu gestartet und da ist mein Problem. Der jetzt festgelegte Drucker wird am nächsten Tag nicht erkannt und es kommt eine Meldung (Falscher Drucker , neu einstellen, Bearbeiten... bla,bla....).
Ich denke mir, dass es sinniger ist wie von Lachtaube in der Antwort 15 vorgeschlagen den Standarddrucker zu "merken" und nach Beendigung wieder "zuzuweisen"
Leider bekomme ich das nicht hin.
Jetziger Code lautet:
Private Sub cmbPrinter_Enter()

Dim prtloop As Printer
Me!cmbPrinter.RowSource = ""
For Each prtloop In Application.Printers
Me!cmbPrinter.AddItem prtloop.DeviceName
Next prtloop
 
   
End Sub
Private Sub cmbPrinter_AfterUpdate()

If Me.Kategorie = "LKW" Then

   DoCmd.OpenReport "BerichtChecklisteLKW", acPreview,  ,  "[GeräteNummer] = '" & Me![GeräteNummer] & "'", acHidden
   Reports!BerichtChecklisteLKW.Printer = Application.Printers(CStr(Me!cmbPrinter))
   Docmd.SelectObject acReport,  "BerichtChecklisteLKW"
   DoCmd.PrintOut
   DoCmd.Close acReport, "BerichtChecklisteLKW"

   DoCmd.OpenReport "BerichtChecklisteBestueckungLKW", acPreview,  , "[GeräteNummer] = '" & Me![GeräteNummer] & "'", acHidden
   Reports!BerichtChecklisteBestueckungLKW.Printer =Application.Printers(CStr(Me!cmbPrinter))
   Docmd.SelectObject acReport,  "BerichtChecklisteBestueckungLKW" 
   DoCmd.PrintOut
   DoCmd.Close acReport, "BerichtChecklisteBestueckungLKW"

End If

End Sub
Kann mir einer dabei behilflich sein?
Mfg. Udo
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1333
Re: mehrere geöffnete Berichte drucken
« Antwort #23 am: Juni 10, 2018, 14:08:40 »
Du kannst in einem Bericht nur in der Entwurfsansicht den Drucker ändern, was ja auch hier im Thema nachzulesen ist.

Mein Code ist doch klar und verständlich. Warum setzt Du ihn mit Namensanpassung nicht 1:1 um?
Grüße von der (⌒▽⌒)
 

Offline Icemann1970

  • Access-Profi
  • **
  • Beiträge: 182
Re: mehrere geöffnete Berichte drucken
« Antwort #24 am: Juni 10, 2018, 22:58:10 »
Hallo Lachtaube,
Keine Ahnung was da schiefgelaufen ist. Zigmal neu geschrieben und siehe da ..... jetzt funktioniert es.
Sorry und danke für deine Antwort.
Mfg. Udo