Printknop op formulier maken die middels checkbox geselecteerde records print

Status
Niet open voor verdere reacties.

DanielleP

Nieuwe gebruiker
Lid geworden
21 nov 2018
Berichten
4
Hey,
Ik ben niet zo heel handig in Access. Heb ook al gezocht op dit forum, veel gevonden maar net niet wat ik wil.
Ik heb een orderbestand in een formulier (checkbox, naam, adres, plaats), en nu wil ik de facturen printen via een knop op het formulier.
Dit heb ik nu gemaakt (bij klikken op de knop):

Private Sub RapportNaarBestand_Click()

Dim stDocName As String

strSQL = "SELECT Orders.OrderID, Orders.Plaats, Orders.Adres FROM Orders WHERE (((Orders.SelectedPrint)=True));"
Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)

stDocName = "Invoice"
strPathName = CurrentProject.Path & "\PDF" & rs!Plaats & " " & rs!Adres & " " & "(" & rs!OrderID & ")" & ".pdf"

DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, strPathName

Exit_cmdPreview_Click:
Exit Sub

Err_cmdPreview_Click:
If Err <> 2501 Then
MsgBox Err.Description
End If
Resume Exit_cmdPreview_Click

Als ik nu klik gaat hij toch alle records in 1 pdf printen (in plaats van 1 pdf per record) en aan het einde komt een foutmelding (Fout 2501 tijdens uitvoering. De actie OututTo is geannuleerd).
Op de 1 of andere manier wordt de checkbox blijkbaar niet als selectie gezien denk ik??

Weet iemand zo wat ik fout doe?
 
Ik doe iets gelijkaardigs maar dan via een recordset een tabel openen en die via een loop laten een reeks doorlopen van records waar je voor je bewuste rapport een vinkje hebt aangezet. Dat aan/af vinken gebeurt in een tussenstap via een pop-up formulier. Op jouw manier zal je er niet geraken denk ik.
 
En heb jij daar een voorbeeldje van of is dat te makkelijk?
Overigens heb ik het allemaal niet zelf bedacht maar bij elkaar geschraapt van internet.
Ik ben niet zo van de macro's maar ik twijfel of ik er op deze manier uit ga komen.
 
Wat je wilt is geen probleem, ik zal de code vanavond wel even klaar zetten. Kom je er niet uit, kun je altijd nog een voorbeeld db posten.
 
Serieus? Ik zou bijna tranen in mijn ogen krijgen dat er nog zulke behulpzame mensen bestaan!
Ik ben echt een noobie op dit gebied, dus zou Jip en Janneke taal zeer waarderen.
Ben jij ook degene achter die cursus die ik zag op dit forum?
Indrukwekkend!
 
Dank je wel voor het compliment. En nog aan de juiste persoon ook :). Ben er mee bezig!
 
Eigenlijk had Johan je al op het rechte pad gezet (sterker nog: je was zelf al op het pad gaan staan ;), dus ik hoef 'm verder alleen maar in te koppen.
Code:
Private Sub RapportNaarBestand_Click()
Dim strSQL As String
Dim pad As String
Dim rs As DAO.Recordset
    
    On Error GoTo Hell
    pad = CurrentProject.Path & "\PDF\"
    strSQL = "SELECT OrderID, Plaats, Adres FROM Orders WHERE SelectedPrint=True"
    Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)
    With rs
        If Not .EOF = .BOF Then
            Do While Not .EOF
                strPathName = pad & rs!Plaats & " " & rs!Adres & " " & "(" & rs!OrderID & ")" & ".pdf"
                DoCmd.OutputTo acOutputReport, "Invoice", acFormatPDF, strPathName, False, , , acExportQualityPrint
                .MoveNext
            Loop
        End If
        .Close
    End With
    Exit Sub
    
Hell:
    If Err <> 2501 Then MsgBox Err.Description
End Sub

Je probleem was dat je wel een recordset had gemaakt, maar hem verkeerd gebruikte. Als je een recordset gebruikt, dan moet je er doorheen loopen om de verschillende rapporten apart op te slaan. Omdat ik niet weet op welk veld jij de verschillende rapporten wilt splitsen, kan ik dat stuk niet maken. Hier zie je de routine die je óók nodig hebt om de verschillende rapporten apart op te slaan. Met deze oplossing krijg je dus net zoveel rapporten als er records zijn. Alleen: het rapport is in elk bestand identiek, omdat de onderliggende bron niet gefilterd is.
Dat is dus óók niet zo moeilijk, maar dan moet ik weten wat het veld is waarop je de query die onder het rapport hangt kan filteren. Eigenlijk zou ik dan ook de hele query moeten hebben, want het is in eerste instantie die query die voor elk rapport apart moet worden gemaakt. Maar kijk eerst maar eens of je nu aparte rapporten krijgt :).
 
Dank je wel zeg.
Ik weet nog niet helemaal wat je zegt, maar ik meen een deel te begrijpen.
De query die achter het rapport hangt heet Facturen.
Ik krijg het nu nog niet werkend en ik heb het idee dat het veld SelectedPrint (een Ja/Nee veld in tabel Orders) niet opgepikt wordt in het formulier.
Denk dat mijn formulier niet goed is.
In het doorlopende formulier staan alle OrderID, klantnaam, adres, plaats, vertegenwoordiger met veldje selected print ervoor.
Ik wil op dat formulier aan kunnen vinken welke records ik wil printen (in individuele pdf's dus).
Dus stel OrderID dan zou hij de query Facturen daarop moeten filteren en dan het rapport moeten printen naar pdf.
OrderID is overal het unieke veld.

Wat een verhaal, kan je er nog een touw aan vast knopen?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan