printout van meerdere kopies van een report

Status
Niet open voor verdere reacties.

Jeronimo1

Nieuwe gebruiker
Lid geworden
18 mei 2010
Berichten
3
Hallo !

Ik heb een Access report met parameter query die ik laat afdrukken via een command button in een form.

Wanneer ik op de knop druk moet ik dus de parameter ingeven waarna het report met de juiste records automatisch afdrukt.
Ik moet hierbij GEEN preview zien van het report maar gewoon in het form venster blijven.

Ik zou echter telkens 4 kopies (printouts) nodig hebben van dit report wanneer ik op de knop druk, en slaag daar op geen enkele manier in.

Onderstaande code levert wel 4 prints op maar doet de form waarin de afdrukbutton staat afsluiten hetgeen niet de bedoeling is :
Code:
DoCmd.OpenReport "zendingsrapport", acViewPreview
DoCmd.PrintOut acPages, 1, 1, , 4

Onderstaande code print gewoon de records af en niet het report.

Code:
Private Sub Command73_Click()

   Dim stDocName As String

stDocName = "zendingsrapport"
    DoCmd.OpenReport stDocName, acNormal
    DoCmd.PrintOut , , , , 4
    
End Sub

het is vast een kleine wijziging die ik moet doen maar ik slaag er niet in, ondanks de voorbije 4 uur zoeken op Google.

Iemand onder jullie die me zou kunnen helpen ?
 
Laatst bewerkt:
Je opdracht zou er ongeveer zo uit moeten zien:

Code:
    stDocName = "rptRekeningen"
    DoCmd.OpenReport stDocName, acNormal, , "Rekeningnr =" & Me.Rekeningnr
 
bedankt voor je reactie Octafish.

De code die je vermeldde zorgt er echter gewoon voor dat er één bepaald record op het rapport zal verschijnen maar dat heb ik reeds ingebouwd dmv parameterquery op m'n rapport.

Ik zou enkel 4 kopies (prints) moeten hebben bij elke printout van het rapport (gebaseerd op bep. parameters).

Ik vermoed dat een Docmd.Printout code moet toegevoegd worden maar helaas print hij dan niet het rapport uit maar de records zelf (vanuit de form).
 
Er zijn 2 mogelijkheden:

1. er hoeft geen selectie te worden gemaakt, het rapport uit het databasevenster kan worden afgedrukt
voorbeeld:
Code:
Private Sub cmdPrintAlles_Click()
    DoCmd.SelectObject acReport, "rptMijnRapport", True
    DoCmd.PrintOut , , , , 4
End Sub

2. er moet wel een selectie worden gemaakt
voorbeeld:
Code:
Private Sub cmdPrintSelectie_Click()
    Dim sRep        As String
    sRep = "rptMijnRapport"
    DoCmd.OpenReport sRep, acViewPreview, , "ID=2"
    DoCmd.SelectObject acReport, sRep, False
    DoCmd.PrintOut , , , , 4
    DoCmd.Close acReport, sRep
End Sub
 
Laatst bewerkt:
dankjewel Harry !

Je 2de voorbeeld heeft me geholpen mits een kleine aanpassing.

Ik heb één regel verwijderd aangezien de parameter query in m'n report reeds de juiste record oplevert.

Code:
DoCmd.SelectObject acReport, sRep, False

Nu gaat hij wel nog naar het report maar sluit het door middel van je laatste codelijn terug af.

Code:
DoCmd.Close acReport, sRep

Niet meteen de snelste oplossing maar het lijkt me dat het de enige mogelijkheid is.
 
't Is zeker niet de enige mogelijkheid... Je kunt ook bijvoorbeeld overwegen om de selectie hard vanuit het formulier op het rapport te zetten, en vervolgens de printopdracht te geven. In dat geval heb je geen aparte query nodig op je rapport.
Een voorbeeldje:
Code:
Sub RapportCode(sRapport As String, sBon As String) Dim tmp
Dim sFilter as String
Dim sTabel as String

    DoCmd.OpenReport sRapport, acViewDesign, , , acHidden
    sTabel = Reports(sRapport).RecordSource
    If InStr(1, UCase(sTabel), "WHERE") > 0 Then
        strSQL = Left(sTabel, InStr(1, sTabel, "WHERE ") - 1)
    Else
        If InStr(1, UCase(sTabel), "SELECT") = 0 Then
            If InStr(1, sTabel, " ") > 0 And InStr(1, sTabel, "[") = 0 Then
                sTabel = "[" & sTabel & "]"
            End If
            strSQL = "SELECT * FROM " & sTabel & " "
        Else
            strSQL = sTabel
        End If
    End If

    'Extra loopje, om de punt-komma's te verwijderen.
    Do Until Right(strSQL, 1) <> ";"
        strSQL = Left(strSQL, Len(strSQL) - 1)
    Loop

    sFilter = " WHERE (OpdrachtID=" & sBon & ");"
    strSQL = strSQL & sFilter
    Reports(sRapport).RecordSource = strSQL
    DoCmd.Close acReport, sRapport, acSaveYes
    DoCmd.OpenReport sRapport, acNormal
    DoCmd.PrintOut , , , , 4
End Sub
Of iets dergelijks...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan