Printlade selecteren in formulier

Status
Niet open voor verdere reacties.

naprius

Gebruiker
Lid geworden
25 apr 2007
Berichten
147
Ik heb al rondgezocht op het forum en kwam uit bij een zelfde soort vraag. Het antwoord daarop was dat je de rapporten gewoon moet instellen op een bepaalde lade en dan onthoudt hij dat.

Echter hebben wij zoals gewoonlijk van die vervelende instellingen waardoor de standaardprintlade altijd weer terugkeert naar lade2, waar speciaal papier uitkomt.

Ik heb een formulier in elkaar gezet waarmee je verschillende rapporten kunt oproepen en 1 knop die al die rapporten in 1 keer uitprint als je erop klikt. Echter doet hij dat vanuit lade 2, wat ik ook van tevoren instel in de rapporten.

Is er een stukje code dat ik in VBA kan meegeven waardoor hij altijd uit lade 1 print?

Alvast bedankt!
 
Je kunt geen printerlade meegeven met een printopdracht, vrees ik. Zoals je zelf al aangaf, onthoudt Access de instellingen op het rapport zelf. Daar zou ik de oplossing dus eerst zoeken.
 
Al vond ik nog wel een procedure die iemand zelf ook weer ergens had gevonden... Hij had 'm niet getest, en ik ook niet, maar probeer 't eens...

Code:
Option Compare Database
Option Explicit

Const R_UPPER_TRAY = 1
Const R_LOWER_TRAY = 2


Type str_DEVMODE
RGB As String * 94
End Type

Type type_DEVMODE
strDeviceName As String * 16
intSpecVersion As Integer
intDriverVersion As Integer
intSize As Integer
intDriverExtra As Integer
lngFields As Long
intOrientation As Integer
intPaperSize As Integer
intPaperLength As Integer
intPaperWidth As Integer
intScale As Integer
intCopies As Integer
intDefaultSource As Integer
intPrintQuality As Integer
intColor As Integer

intDuplex As Integer
intResolution As Integer
intTTOption As Integer
intCollate As Integer
strFormName As String * 16
lngPad As Long
lngBits As Long
lngPW As Long
lngPH As Long
lngDFI As Long
lngDFr As Long
End Type

Sub SetReportTray(r As Report, traynumber As Integer)
'
' Changes the tray number of a report that is opened in DESIGN mode
'
Dim DM As str_DEVMODE 'R_DevModeStr
Dim DevMode As type_DEVMODE
'MsgBox "test"
If Not IsNull(r.PrtDevMode) Then
    DM.RGB = r.PrtDevMode
    LSet DevMode = DM
    DevMode.intDefaultSource = traynumber
    LSet DM = DevMode
    r.PrtDevMode = DM.RGB
End If
End Sub

Function TwoTrayPrinting(ReportName As String) As Integer
'
' Prints a report's page 1 from the upper tray and the remaining pages from the lower tray.
' NOTE: The report gets run twice, once for each tray.
'
' Assumes: that the report has 999 or fewer pages.
'
' Returns: TRUE = Success; FALSE = Error
'
Const MAX_PAGES = 999

' Open the report in DESIGN view
On Error GoTo TTP_Error
DoCmd.Echo False
DoCmd.OpenReport ReportName, A_DESIGN

' Switch to upper tray and print first page
SetReportTray Reports(ReportName), R_UPPER_TRAY
DoCmd.PrintOut A_PAGES, 1, 1

' Switch to lower tray and print remaining pages
SetReportTray Reports(ReportName), R_LOWER_TRAY
DoCmd.PrintOut A_PAGES, 2, MAX_PAGES

' Close the report
DoCmd.SetWarnings False
DoCmd.Close A_REPORT, ReportName
DoCmd.SetWarnings True
DoCmd.Echo True
'TwoTrayPrinting = True

TTP_Exit:
Exit Function

TTP_Error:
' TwoTrayPrinting = False
DoCmd.Echo False ' Restore screen echo
Resume TTP_Exit

End Function
 
Zoals ik al zei zijn de printerinstellingen hier knudde waardoor hij toch altijd weer naar lade 2 gaat. Hij "onthoudt" dus niets. Ik begrijp overigens weinig van die code die je me gaf, maar zover ik kan zien geldt dit alleen voor rapporten geopend in de ontwerpweergave?

Het formulier heeft een knop en die print meteen de rapporten uit, ik zie dus geen rapporten in ontwerpweergave meer.
 
Zoals ik al zei, ik heb 'm zelf niet uitgeprobeerd. Maar het klopt dat het rapport vanuit het ontwerpscherm wordt ingesteld/afgedrukt. Maar als dat het probleem oplost, lijkt mij dat niet zo'n probleem.
Zelf gebruik ik regelmatig routines die een rapport eerst openen in Ontwerpmodus, dan iets aanpassen, dan het rapport opslaan/sluiten, en vervolgens afdrukken of openen in weergavemodus. Als dit het probleem voor jou oplost, moet je het maar eens proberen. Ik zou de regel waarin het rapport wordt geopend dan wel vervangen door:
Code:
    DoCmd.OpenReport ReportName, acViewDesign, , , acHidden
want dan zie je verder niet op het scherm wat er gebeurt. En dan lijkt het meer op een gewone afdrukroutine.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan