PDA

Vollständige Version anzeigen : Druckerauswahl


trustavm
26.04.2001, 23:28
Hallo zusammen,

Es geht um das Drucken eines Berichts (rep_auftrag). Ich möchte den Druck 1. von zwei verschiedenen Formularen aus ansteuern, 2. vorm Druck den Drucker auswählen.

Im ersten Formular (frm_auftrag) soll nur der angezeigte Datensatz gedruckt werden, es muss als Kriterium das Feld (auftrag_no) übergeben werden.

Im zweiten Formular (frm_druckmenue) wird der zu druckende "Bericht" ausgewählt und als Kriterium soll ein Datumsbereich von bis angegeben werden. Die Eingabe der Selektion erfolgt über ungebundene Textfelder (Dat_von)
und (Dat_bis).

Wie kann ich das realisieren? Und wie kann ich vor dem Druck den Drucker auswählen (und die Anzahl der Kopien etc.)?

Danke im voraus und Gruß

André

Günther Kramer
27.04.2001, 08:54
Hallo André,

vielleicht hilft dir der AP-Druick-Manager von uns weiter. Die Freeware-Version des Managers findest du auf unserer Homepage unter http://www.access-paradies.de -> Software-Katalog.

Birgit Dannenberg
27.04.2001, 08:56
Die verschiedenen Anforderungstypen können entweder über OpenArgs (habe ich gerade erst gelesen, muß wohl in A2000 möglich sein) oder über Abfrage der zugeordneten Formulare beim Öffnen des Berichts gesteuert werden.
if IsFormOpen("frm_A1") then ... else ... endif
wobei die Funktion IsFormOpen in der Forms-Auflistung nachsieht, ob das gesuchte Form geöffnet ist. (d.h. es darf jeweils nur eins offen sein!!)

Hier ein Beispiel zum Öffnen des Druckermenüs unter Verwendung des CommonDialog-Steuerelements:

Private Sub sfl_Druck_Click()
On Error GoTo Err_sfl_Druck_Click

Dim rep1 As String
rep1 = "pickzettel"

If gbl_Pages = 0 Then
Application.Echo False, "Ermitteln Seitenzahl"
gbl_Pickz = False
DoCmd.OpenReport rep1, acViewPreview
gbl_Pages = Reports(rep1).Pages
DoCmd.Close acReport, rep1
gbl_Pickz = True
Application.Echo True, ""
End If

' Formular bleibt geöffnet (--> Fortsetzung der sel. Druckausgabe möglich)
' DoCmd.Close

' Initialisieren CommonDialog-Steuerelement
ComDlg2.DialogTitle = "Pickzetteldruck"
ComDlg2.CancelError = True
ComDlg2.flags = cdlPDNoSelection + _
cdlPDCollate + cdlPDHidePrintToFile + _
cdlPDUseDevModeCopies
' = &H4 + _ --> alles = default _
&H10 + _
&H40000 + _
&H100000
ComDlg2.Max = gbl_Pages
' ComDlg2.ToPage = ComDlg2.Max
On Error Resume Next

'Öffnen Drucker-Menü
ComDlg2.ShowPrinter
If Err > 0 Then
MsgBox "Druckauftrag abgebrochen!@" & _
"Die Pickzettelerstellung kann nicht durchgeführt werden.@", _
vbExclamation, titel
On Error GoTo 0

' --> page selection ?
ElseIf (ComDlg2.flags Or cdlPDPageNums) = ComDlg2.flags Then
If MsgBox("Selektiver Pickzetteldruck@" & _
"Bitte Auswahl bestätigen:@" & _
"Ausdruck von Seite " & ComDlg2.FromPage & _
" bis " & ComDlg2.ToPage, _
vbExclamation + vbOKCancel, titel) = vbOK Then
DoCmd.SelectObject acReport, rep1, True
DoCmd.PrintOut acPages, ComDlg2.FromPage, ComDlg2.ToPage, acMedium
Else
MsgBox "Druckvorgang abgebrochen"
End If

' --> print all ?
ElseIf (ComDlg2.flags Or cdlPDAllPages) = ComDlg2.flags Then
If MsgBox("alles drucken?", vbYesNo + vbQuestion, _
"Drucken Versandprotokoll") = vbYes Then
gbl_Pickz = True
DoCmd.OpenReport rep1, acNormal
DoCmd.Close
Else
MsgBox "Druckvorgang abgebrochen"
End If
Else
MsgBox "Unerwarteter Rückgabewert/Fehler@" & _
"Flag = " & ComDlg2.flags & " @" & _
"Der Druckauftrag kann nicht ausgeführt werden."
End If
Exit_sfl_Druck_Click:
Exit Sub
Err_sfl_Druck_Click:
MsgBox Err.Description
Resume Exit_sfl_Druck_Click
End Sub

gruss birgit