opslaan mailen afdrukken van een rapport

Status
Niet open voor verdere reacties.

jan62

Gebruiker
Lid geworden
19 jan 2010
Berichten
36
Ik heb nog een vraagje omtrent onderstaande. Het gaat nogmaals over de code onder een knop waarvan ik dat het anders zou moeten.
Ik heb de volgende vba code onder een knop, alles werkt in principe goed als ik niet afwijk van de procedure.
Ik rename ook hier het rapportnaam "rpfactuur" naar een "idnr en datum"
ik sla het rapport op met een "idnr een datum" daarna opent de mail en staat hij als bijlage in deze mail met het "idnr en datum"
als ik nu op verzenden druk wordt het rapport geprint en het "idnr datum wordt terug veranderd naar de naam "rpfactuur"
dit voor de volgende sessie.
Maar als ik nu de mail niet verstuur en wegklik omdat ik nog iets wil wijzigen in het rapport blijft de naam van het rapport "" idnr datum"
en kan ik de volgende sessie niet meer starten want hij vindt de naam rpfactuur niet meer.
hoe kan ik dit oplossen of doe ik het te omslachtig.

vr gr Jan
Code:
Private Sub Knop57_Click()
Dim stDocName As String
Dim sqlTemp As String
Dim qDef As QueryDef
     

   Set qDef = CurrentDb.QueryDefs("qfactuur9")
    sqlTemp = "SELECT Id, memo, datum, naam, adres, plaats, postcode," _
      & "[gewerkte uren], [extra uren], [totaalbedrag materialen], [subtotaal]+[Btw9]+[Btw21] AS factuurbedrag," _
      & "[gewerkte uren]+[extra uren]+[totaalbedrag materialen] AS subtotaal, [gewerkte uren]+[extra uren] AS urentotaal," _
      & "[gewerkte uren]/100*9+[extra uren]/100*9 AS [Btw9]," _
      & "[totaalbedrag materialen]/100*21 AS [Btw21],[9]" _
      & "FROM facturen " _
      & "WHERE (Id=" & Me.Id & ");"
    qDef.SQL = sqlTemp
    
    stDocName = Right("0000" & Me.Id, 4) & "-" & Format(Date, "yyyymmdd")
    DoCmd.OutputTo acOutputReport, "rpfactuur9", acFormatPDF, "f:\Facturen\" & stDocName & ".pdf"
    DoCmd.Rename stDocName, acReport, "rpFactuur9"
    DoCmd.SendObject acSendReport, stDocName, acFormatPDF, "test@test.nl", , , "factuur.", "Hoi," & Chr(13) & _
    "Bijgesloten vindt u als bijlage de factuur van" & Chr(13) & Me.naam & Chr(13) & Me.datum & Chr(13) & _
    "Vriendelijke groet Ikke", , True
    DoCmd.OpenReport stDocName, acNormal, , "Id=" & Me.Id, acHidden, sFilter
    DoCmd.Rename "rpFactuur9", acReport, stDocName
    
                

End Sub
 
Laatst bewerkt door een moderator:
Als je Outlook gebruikt, kun je de mail beter via Outlook versturen, dan hoef je niet zo te klooien. Want dat is het eigenlijk. Ik zie het nut niet van het hernoemen van je rapport; geef hem een algemene naam en laat de klant zelf bepalen hoe die ‘m opslaat. Of dus via Outlook.
 
Hoi Octafish,

ik verstuur hem via outlook, is de code voor outlook anders dan wat ik doe?

gr Jan
 
Oh ja! Je moet dan een Outlook sessie openen (Late Binding of Early Binding, maakt niet zoveel uit) en dan de mail samenstellen. En dan kun je dus een bijlage meesturen.
 
Hoi,

Heb je een voorbeeldje? kan dit ook ook onder een knop? ik begrijp het zo niet echt.

gr jan
 
Laatst bewerkt:
Ik zal morgen een voorbeeldje posten. En ja, dat kan uiteraard onder een knop, want in essentie doe je niks anders als nu. Maar dan beter :).
 
Hoi Octafish,

Ik kan een voorbeeldjje plaatsen hoe ik het nu doe als je het nodig hebt, het veranderen van de naam van het rapport "rpfactuur9" naar "idnr en datum" en na het mailen en printen weer terug veranderen naar "rpfactuur9i" is mijn grootste probleem met deze code, omdat als je de mail niet verstuurd de naam niet terug veranderd naar de beginnaam.

gr Jan
 

Bijlagen

  • test2.rar
    41,6 KB · Weergaven: 49
En dan krijg je zoiets:

Code:
Private Sub Knop66_Click()
Dim stDocName As String, sqlTemp As String, mess_body As String, aryAttach() As String
Dim qDef As QueryDef
'   Early Binding
''Dim appOutLook As Outlook.Application
''Dim MailOutLook As Outlook.MailItem
'   Late Binding
Dim appOutLook As Object
Dim MailOutLook As Object

    Set qDef = CurrentDb.QueryDefs("qfactuur9")
    sqlTemp = "SELECT Id, memo, datum, naam, adres, plaats, postcode," _
        & "[gewerkte uren], [extra uren], [totaalbedrag materialen], [subtotaal]+[Btw9]+[Btw21] AS factuurbedrag," _
        & "[gewerkte uren]+[extra uren]+[totaalbedrag materialen] AS subtotaal, [gewerkte uren]+[extra uren] AS urentotaal," _
        & "[gewerkte uren]/100*9+[extra uren]/100*9 AS [Btw9]," _
        & "[totaalbedrag materialen]/100*21 AS [Btw21],[9]" _
        & "FROM facturen " _
        & "WHERE (Id=" & Me.Id & ");"
    qDef.SQL = sqlTemp
    stDocName = Right("0000" & Me.Id, 4) & "-" & Format(Date, "yyyymmdd")
    DoCmd.OutputTo acOutputReport, "rpfactuur9", acFormatPDF, "F:\Facturen\" & stDocName & ".pdf"

    Set appOutLook = CreateObject("Outlook.Application")
    Set MailOutLook = appOutLook.CreateItem(0) '(olMailItem)
    mess_body = "Hoi ," & Chr(13) & _
    "Bijgesloten vindt u als bijlage de factuur van" & Chr(13) & Me.naam & Chr(13) & Me.datum & Chr(13) & Chr(13) & _
    "Met vriendelijke groet"

    With MailOutLook
        '.From = "mailme@stupid.com"
        .BodyFormat = 3 ' olFormatRichText
        .To = "test@admin.nl"
        .Subject = "Bijgaand de beloofde factuur."
        .HTMLBody = mess_body
        '.SentOnBehalfOfName = Me.txtFrom
        '.SenderEmailAddress = Me.txtFrom
        .Attachments.Add "F:\Facturen\" & stDocName & ".pdf"
        .DeleteAfterSubmit = False
        ''.DeleteAfterSubmit = True     'Verwijderen na verzenden
        ''.Send                         'Gelijk verzenden
        .Display                        'Op scherm tonen
    End With

End Sub

Met Late Binding heb je het voordeel dat je geen bibliotheek hoeft te laden, met Early Binding is het wat makkelijker programmeren. Take your pick :).
 
Hoi Octafish,

Goedemorgen, ik ben er super blij mee dit werkt perfect, het veranderen van die naam vond ik ook niet een beste oplossing.
Ik ben vaak al blij dat het werkt, maar met de tips en hulp hier leer ik iedere keer weer bij en de oplossingen zijn vaak perfect.
Bedankt ik sluit deze vraag af,

Vr Groet Jan
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan