Rapport in PDF alles in een PDF, wil er losse PDF van hebben.

Status
Niet open voor verdere reacties.
Wanneer je van elk artikel een pdf wilt maken en opslaan
kan dat met onder staande code

Code:
Dim folder As String
Dim strDocName As String
Dim strWhere As String

On Error GoTo Opslaan_cmdReportOpslaan
folder = CurrentProject.Path & "\Artikelen_PDF\"
MkDir folder
    Resume Opslaan_cmdReportOpslaan

Opslaan_cmdReportOpslaan:
    strDocName = "RP - Product specificatie"
    strWhere = "[Id]=" & Id
DoCmd.OpenReport strDocName, acPreview, "", strWhere, acHidden
DoCmd.OutputTo acOutputReport, strDocName, acFormatPDF, folder & "Artikel " & Me!Veld2 & ".pdf"

DoCmd.Close acReport, strDocName
deze opdracht maakt een map Artikelen_PDF aan. in of op de locatie van de database
met daarin de pdf
 
Top deze werkt perfect, echt super.
dit is de code per artikel.
echter als ik alles in een keer wel uitprint naar PDF krijg ik een foutmelding.
Private Sub PrintPDF_Click()

Dim folder As String
Dim strDocName As String
Dim strWhere As String

On Error GoTo Opslaan_cmdReportOpslaan
folder = CurrentProject.Path & "\Artikelen_PDF\"
MkDir folder
Resume Opslaan_cmdReportOpslaan

Opslaan_cmdReportOpslaan:
strDocName = "RP - Product specificatie"
strWhere = "[Id]=" & Id
DoCmd.OpenReport strDocName, acPreview, "", strWhere, acHidden
DoCmd.OutputTo acOutputReport, strDocName, acFormatPDF, folder & "Artikel " & Me!Veld2 & ".pdf"

DoCmd.Close acReport, strDocName
End Sub

hij blijft hangen op de regel: DoCmd.OpenReport strDocName, acPreview, "", strWhere, acHidden
 
Klopt, dat doet hij bij mij ook, perfct
maar dit is per artikel als ik een keuze maak.

En als ik alles in een keer wil afdrukken? dus 9 artikelen in 9 pdf's ?
 
Moet je een recordset maken die in een lus het aantal records doorloopt, en van elk record het artikel uitleest.
 
Hier zoals ik het doe (is iets andere werkwijze dan René, zoals je ziet)
Code:
Private Sub cmdPrinten_Click()
Dim Folder As String, strDocName As String, strSQL As String, strWhere As String
Dim qTemp As QueryDef
Dim rs As DAO.Recordset
Dim iLast As Integer

    strDocName = "RP - Product specificatie"
    Folder = CurrentProject.Path & "\Artikelen_PDF\"
    If Dir(Folder) = "" Then CreateFolder Folder
    strSQL = "SELECT * FROM Artikel"
    Set rs = CurrentDb.OpenRecordset(strSQL)
    With rs
        .MoveLast
        If .RecordCount > 0 Then
            DoCmd.SetWarnings False
            iLast = .RecordCount - 1
            .MoveFirst
            For i = 0 To iLast
                On Error GoTo Create_qTemp
                strWhere = " WHERE  Id=" & rs!Id
                Set qTemp = CurrentDb.QueryDefs("qTemp")
                On Error GoTo 0
                qTemp.SQL = strSQL & strWhere
                DoCmd.OutputTo acOutputReport, strDocName, acFormatPDF, Folder & "Artikel " & StrConv(rs!Veld2, vbProperCase) & ".pdf"
                .MoveNext
            Next i
            DoCmd.SetWarnings True
        End If
    End With
    Exit Sub

Create_qTemp:
    Set qTemp = CurrentDb.CreateQueryDef("qTemp", strSQL & strWhere)
    Resume Next

End Sub
De truc: ik gebruik een tijdelijke query (qTemp) waarvan ik steeds de SQL verander. Het rapport ziet dus altijd één record, en hoeft nooit Hidden geopend te worden. Deze techniek bevalt mij persoonlijk wat beter.
 
Met deze code maakt hij een 1 pdf met de naam van 1 artikel, met alles artikelen erin,
dit doet hij bij elk pdf, deze vult hij met alle artikelen.

dus hij maakt netjes per artikel een pdf, maar vult ze met alle artikelen.
 
Je moet het rapport ook aan de query hangen, niet aan de tabel :).
 
Heb het rapport nu via een query, het rapport wordt gevoed door een query.
dit is met hetzelfde resultaat.
alle pdf gevuld met alle artikelen.

Deze regel heb ik verwijderd, hier loopt hij op vast.
If Dir(Folder) = "" Then CreateFolder Folder

Fout melding is:
Compileerfout:
Sub of Function is niet gedefinieerd.
 
Heb het rapport nu via een query, het rapport wordt gevoed door een query.
'Een query' of 'de query'? Ik heb in de code een query gebruikt (qtemp) die je wel aan je rapport moet hangen. Gebruik je een eigen query, da's prima, maar dan moet je de code daarop aanpassen.
 
Sorry, dat ik dit niet begreep, maar het werkt nu fantastisch.
Ik wil jullie allebei hartelijk bedanken. Toppers
dit scheelt mee een heleboel werk.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan