wat is hier verkeerd aan

Status
Niet open voor verdere reacties.

dinoshop

Terugkerende gebruiker
Lid geworden
8 sep 2000
Berichten
1.100
de mail naar alleleden werkt maar zodra ik de opdracht er bijvoeg om de rptPlanning te verzenden gaat mis.
Code:
Private Sub Knop971_Click()
Dim FileName As String
Dim Filepath As String
Dim oOutlook As outlook.Application
Dim oEmailItem As MailItem
Dim rs As Recordset
Dim custemerEmail As String


If oOutlook Is Nothing Then
    Set oOutlook = New outlook.Application
End If
Set oEmailItem = oOutlook.CreateItem(olMailItem)
With oEmailItem
    Set rs = CurrentDb.OpenRecordset("select *from sendmail")
If rs.RecordCount > 0 Then
        rs.MoveFirst
        Do Until rs.EOF
        If IsNull(rs!Email) Then
        rs.MoveNext
Else
        custemerEmail = custemerEmail & rs!Email & ";"
        ''.To = custemerEmail
        rs.MoveNext
    
    DoCmd.OpenReport "RpTPlanning", acViewPreview, , Me.Filter, acHidden
    DoCmd.SendObject acSendReport, "RptPlanning", acFormatPDF, custemerEmail, , , Me.Werknemer, , True, """"
    DoCmd.Close acReport, "RptPlanning"
End If

Loop

End If

Set rs = Nothing
.CC = ""
.Subject = "Werkschema"
''.Attachments.Add "c:\user\dino\"
.Display

End With
Set oEmailItem = Nothing
Set oOutlook = Nothing
End Sub
 
Kijk eens in het draadje van Anietje, daar staat een véél betere oplossing voor je rapport. Overigens heb je een rare volgorde in je code zitten met je mailstuk.
 
ka niet vinden wat iets met access te maken heeft en email van haar .
 
Dan kijk je niet echt goed, want het draadje wat ik bedoel staat 5 regels onder die van jou :).
 
oke niet gezien dus , maar kan het niet zo
Code:
Set rs = Nothing
.CC = ""
.Subject = "Planning"
.Attachments.DoCmd.OpenReport "RpTPlanning", acViewPreview, acFormatPDF, , Me.Filter
hij geeft wel aan van niet wandt regel attachments word geel maar geeft bv op filter wel de juiste id aan
 
Dat ID komt uit je formulier en heeft niks met de mail te maken. Nee, het kan zo niet. Je moet een bestaand rapport versturen en op het moment dat jij dat nu doet bestaat dat niet. En je kunt niet iets versturen wat fysiek niet bestaat.
 
Laten we eerst eens je procedure analyseren, want zoals ik al zei: die is een beetje vreemd. Zo start je een Outlooksessie (oOutlook = New Outlook.Application) maar gebruik je hem nergens! Mailen doe je namelijk met DoCmd.SendObject acSendReport en daarvoor heb je Outlook helemaal niet nodig; SendObject gebruikt de default Mailclient. Kan dus ook heel iets anders als Outlook zijn.
Verder open je een recordset om de mailadressen in een string te zetten
Code:
    CustomerEmail = CustomerEmail & rs!Email & ";"
    rs.MoveNext
    DoCmd.OpenReport "RpTPlanning", acViewPreview, , Me.Filter, acHidden
    DoCmd.SendObject acSendReport, "RptPlanning", acFormatPDF, CustomerEmail, , , Me.Werknemer, , True, """"
    DoCmd.Close acReport, "RptPlanning"
En verzend je dus midden in de lus elke keer opnieuw het rapport! Dat betekent dus dat, omdat je de string CustomerEmail steeds verder uitbreidt, de eerste persoon dus tig mailtjes stuurt! Stel dat je 6 personen hebt, dan krijg je de eerste keer 1 persoon in de variabele, die de mail krijgt. De volgende gang staan er 2 personen in (de eerste en een nieuwe) en die krijgen dan ook het rapport. Dat is dus 2 exemplaren voor de eerste persoon. Derde gang: weer een persoon erbij. De eerste persoon heeft nu 3 kopieën, de tweede persoon 2 en de derde 1. En zo verder. Klaagt er niemand dat ze 12 keer dezelfde mail hebben gekregen?
 
ja das nu ook niet de bedoeling, maar ik zit niet met versturen maar de combinatie hiervan dus filteren op email adressen en deze verzamelen en dan in 1 keer de mail versturen.
nu is zo dat bovenste deel werkt die haalt de email adressen op maar dan kan ik geen bijlage maken en verzenden.
heb nu vee voorbeelden gemaakt in vba maar er is altijd iets aan de hand waardoor het niet werkt
en heb hierbij dus hulp nodig .
 
Kijk eens naar zoiets:
Code:
Dim CustomerEmail As String, FileName As String, Filepath As String
Dim rs As ADO.Recordset

    Set rs = CurrentDb.OpenRecordset("select * from sendmail")
    If rs.RecordCount > 0 Then
       Do Until rs.EOF
            If Not rs!Email = vbNullString Then
                If Not CustomerEmail = vbNullString Then CustomerEmail = CustomerEmail & ";"
                CustomerEmail = CustomerEmail & rs!Email
            End If
            rs.MoveNext
        Loop
        
        strSQL = "SELECT [FactuurnummerId], ArtcodeID, Omschrijving, ArtikelgroepID FROM qFactuur "
        strSQL = strSQL & "WHERE [FactuurnummerId] = " & Me.FactuurnummerId & " "
        strSQL = strSQL & "ORDER BY ArtcodeID;"
        Set qTmp = CurrentDb.QueryDefs("tmpRapport")
        qTmp.Sql = strSQL
        DoCmd.SendObject acSendReport, "RptPlanning", acFormatPDF, CustomerEmail
    End If
Hierbij moet je natuurlijk wel de query aanpassen, want die ken ik verder niet. En je rapport; dat moet worden gekoppeld aan de query 'tmpRapport' en die moet op zijn beurt dan ook wel bestaan.
 
oké dank ga er mee aan de slag zodra het iets minder warm is.
maar ik begrijp de opzet allen had ik nooit aan de manier gedacht via SQL
 
Heb je hem wel gedeclareerd? En (moet uiteraard ook ) aangepast aan je eigen situatie?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan