Heb dit er nu van gemaakt maar werkt niet

Status
Niet open voor verdere reacties.

dinoshop

Terugkerende gebruiker
Lid geworden
8 sep 2000
Berichten
1.100
heb deze mail bericht gemaakt met twee bijlages , maar hij blijft aan geven dat er ietss niet goed is wat?
Code:
Dim Email As String
Dim objOutlook As Outlook.Application
Dim objEmail As Outlook.MailItem
Dim strAttach1 As String
Dim strAttach2 As String
Dim Stekst As String
Dim stDocName As String
Dim stDocBijlage As String

stDocName = "Factuur"
stDocBijlage = "Bijlage factuur"

Stekst = "Geachte.....," _
    & vbCrLf & "" _
    & vbCrLf & "Hierbij doe ik U de factuur toekomen voor de door ons geleverde diensten." _
    & vbCrLf & "Mochten hierover vragen zijn, vernemen wij dat graag van U." _
    & vbCrLf & " bedankt u voor het in ons gestelde vertrouwen, " _
    & vbCrLf & "en verzoek u het verschuldigde bedrag voor de vervaldatum te voldoen."

Email = DLookup("Factuurmail", "tblDebiteuren", "[DebID]=" & [DebID])

Set objOutlook = CreateObject("Outlook.application")
Set objEmail = objOutlook.CreateItem(olMailItem)
DoCmd.OpenReport stDocName, acPreview, , "[ProjectID]=" & Me.ProjectID
DoCmd.OpenReport stDocBijlage, acPreview, , "[ProjectID]=" & Me.ProjectID
DoCmd.OutputTo acOutputReport, "stDocName", acFormatPDF, "i:\stDocName.pdf", False
DoCmd.OutputTo acOutputReport, "stDocBijlage", acFormatPDF, , "i:\stDocBijlage.pdf", False

    strAttach1 = "i:\stDocName.pdf"
    strAttach2 = "i:\stDocBijlage.pdf"
    DoCmd.OutputTo acOutputReport, "stDocName", acFormatPDF, strAttach1, False
    DoCmd.OutputTo acOutputReport, "stDocBijlage", acFormatPDF, strAttach2, False
    
    With objEmail
        .To = Email
        .Subject = ProjectID
        .Body = Stekst
        .Display
        .Attachments.Add strAttach1
        .Attachments.Add strAttach2
    End With



Kill strAttach1
Kill strAttach2
End Sub
 
Je zou het ondertussen moeten weten:
maar hij blijft aan geven dat er ietss niet goed is wat?
Op zijn minst aangeven waar hij in de fout gaat :).
 
zal ff proberen uit te leggen
hij moet dus filteren op projectid en daarbij de reports maken en verzenden maar kan het niet voor mekaar krijgen dat hij hierop dus filtert.
jij maakt perfect email aan en zet daarin ook de twee gevraagde Reports maar dan met alle gegevens er in dus zonder de werking van de filter.
zoals je ziet heb ik het geprobeerd om hem via projectid=projectid te zetten, werkt niet.

das dus probleem
 
jij maakt perfect email aan en zet daarin ook de twee gevraagde Reports maar dan met alle gegevens er in dus zonder de werking van de filter.
Ik heb het je al vaker gezegd: gebruik de QueryDefs collectie om de query die onder een rapport hangt aan te passen. Dan kun je niet meer in de fout gaan als je een rapport exporteert naar PDF. Wat is er op tegen om die foolproof methode te gebruiken?
 
ik denk dat je dit bedoeld , heb het geprobeerd in mekaar te zetten helaas nog niet gelukt dus vraag ik je ff om hulp ik doe iets verkeer hij maakt nu via tmpFActuur de gegevens goed aan maar wordt nog niet mee genomen in te verzenden reports
Code:
Private Sub EMail_Click()
Dim Email As String
Dim ProjectID As String, FileName As String, Filepath As String
Dim objOutlook As Outlook.Application
Dim objEmail As Outlook.MailItem
Dim strAttach1 As String, strAttach2 As String, strSQL As String
Dim qTmp As QueryDef
Dim tmp As Variant
Dim rs As Recordset


Email = DLookup("Factuurmail", "tblDebiteuren", "[DebID]=" & [DebID])
Set objOutlook = CreateObject("Outlook.application")
Set objEmail = objOutlook.CreateItem(olMailItem)

    strSQL = "SELECT * FROM QryopenstaandeFacturen WHERE [projectid] = " & Me.ProjectID & " Order by projectid"
    Set qTmp = CurrentDb.QueryDefs("TmpFactuur")
    qTmp.SQL = strSQL
    tmp = InputBox("", "", strSQL)
    
    strSQL = "SELECT * FROM TmpFactuur WHERE ([projectid] Is Not Null And Not [projectid] = """")"
    Set rs = CurrentDb.OpenRecordset(strSQL)
    ''DoCmd.RunSQL strSQL
    
    DoCmd.OutputTo acOutputReport, "factuur", acFormatPDF, "i:\factuur.pdf", False
    DoCmd.OutputTo acOutputReport, "factuur 2", acFormatPDF, "i:\factuur 2.pdf", False

    strAttach1 = "i:\factuur.pdf"
    strAttach2 = "i:\factuur 2.pdf"
    DoCmd.OutputTo acOutputReport, "factuur", acFormatPDF, strAttach1, False
    DoCmd.OutputTo acOutputReport, "factuur 2", acFormatPDF, strAttach2, False
    
    With objEmail
        .To = Email
        .Subject = "Night Warehouse Productivity Reports"
        .Body = "Hierbij ontvangt u de Night Warehouse Productivity Reports."
        .Display
        .Attachments.Add strAttach1
        .Attachments.Add strAttach2
    End With

strSQL = "SELECT QryopenstaandeFacturen.Factuurnummer,QryopenstaandeFacturen.BedrijfID, QryopenstaandeFacturen.Factuurdatum " _
& "QryopenstaandeFacturen.Betreft, QryopenstaandeFacturen.Aanmaning, QryopenstaandeFacturen.Aanmaningsdatum, QryopenstaandeFacturen.Betaald, QryopenstaandeFacturen.Betaaldatum, QryopenstaandeFacturen.BTWpercentage, QryopenstaandeFacturen.DebID, QryopenstaandeFacturen.Naam," _
& "QryopenstaandeFacturen.Contactpersoon, QryopenstaandeFacturen.[Mob Nr], QryopenstaandeFacturen.[E-mail], QryopenstaandeFacturen.[Website:], QryopenstaandeFacturen.tblDebiteuren.Adres, QryopenstaandeFacturen.Nummer, QryopenstaandeFacturen.[BV:], QryopenstaandeFacturen.tblDebiteuren.Postcode, " _
& "QryopenstaandeFacturen.tblDebiteuren.Plaats, QryopenstaandeFacturen.[Telefoon:], QryopenstaandeFacturen.[Fax:], QryopenstaandeFacturen.[Termijn:], QryopenstaandeFacturen.[Factuur Adres], QryopenstaandeFacturen.[Factuur Huisnummer], QryopenstaandeFacturen.BV, QryopenstaandeFacturen.[Factuur Postcode]," _
& "QryopenstaandeFacturen.[Factuur Plaats] , QryopenstaandeFacturen.Factuurmail, QryopenstaandeFacturen.Bijzonderheden, QryopenstaandeFacturen.MailVerzonden, QryopenstaandeFacturen.ProjectID, QryopenstaandeFacturen.Factuur.Adres, QryopenstaandeFacturen.Huisnummer, QryopenstaandeFacturen.Factuur.Postcode," _
& "QryopenstaandeFacturen.Factuur.Plaats, FROM QryopenstaandeFacturen"
Set qTmp = CurrentDb.QueryDefs("tmpFactuur")
    qTmp.SQL = strSQL


Kill strAttach1
Kill strAttach2
End Sub
 
Ik begrijp deze code niet helemaal; zo maak je de SQL pas op het eind en niet aan het begin. Dat werkt natuurlijk niet goed. Tenzij die code daar alleen voor de duidelijkheid staat. In dat geval: da's maar goed ook, want volgens mij klopt hij niet. Ik heb de code even opgeschoond, zodat je het probleem hopelijk beter kunt zien:
Code:
strSQL = "SELECT Factuurnummer, BedrijfID, Factuurdatum " _
    & "Betreft, Aanmaning, Aanmaningsdatum, Betaald, Betaaldatum, BTWpercentage, DebID, Naam, Contactpersoon, [Mob Nr], [E-mail], [Website:], [B][COLOR="#FF0000"]QryopenstaandeFacturen.tblDebiteuren.[/COLOR][/B]Adres, Nummer, [BV:], " _
    & "[COLOR="#FF0000"][B]QryopenstaandeFacturen.tblDebiteuren.[/B][/COLOR]Postcode, [COLOR="#FF0000"][B]QryopenstaandeFacturen.tblDebiteuren.[/B][/COLOR]Plaats, [Telefoon:], [Fax:], [Termijn:], [Factuur Adres], [Factuur Huisnummer], BV, [Factuur Postcode], " _
    & "[Factuur Plaats] , [Factuurmail, [Bijzonderheden, MailVerzonden, ProjectID, [COLOR="#FF0000"][B]QryopenstaandeFacturen.Factuur.[/B][/COLOR]Adres, Huisnummer, [COLOR="#FF0000"][B]QryopenstaandeFacturen.Factuur.[/B][/COLOR]Postcode, QryopenstaandeFacturen.Factuur.Plaats[B][COLOR="#FF0000"],[/COLOR][/B] 
    & "FROM QryopenstaandeFacturen"

Set qTmp = CurrentDb.QueryDefs("tmpFactuur")
    qTmp.SQL = strSQL

Ik heb alle overbodige verwijzing naar de bronquery verwijderd bij de veldnamen; die zijn niet nodig. En de foute verwijzingen een kleur gegeven. Zoals je ziet, nogal wat rood gekleurd :). Dat komt, omdat je verwijst naar queries(?) of tabellen(?) die niet in de query zitten, laat staan gekoppeld zijn. Geen idee dus of dat überhaupt kan gaan werken! Zijn die velden dubbel, dan moeten ze sowieso weg. Daarnaast eindig je de velden met een komma (achter [Plaats]), en dat levert geheid een foutmelding op, want Access verwacht dan nóg een veld. En dat komt dan niet.
 
nieuwe poging
Code:
Dim Email As String
Dim ProjectID As String, FileName As String, Filepath As String
Dim objOutlook As Outlook.Application
Dim objEmail As Outlook.MailItem
Dim strAttach1 As String, strAttach2 As String, strSQL As String
Dim qTmp As QueryDef
Dim tmp As Variant
Dim rs As Recordset


Email = DLookup("Factuurmail", "tblDebiteuren", "[DebID]=" & [DebID])
Set objOutlook = CreateObject("Outlook.application")
Set objEmail = objOutlook.CreateItem(olMailItem)

    
    
    strSQL = "SELECT * FROM TmpFactuur WHERE ([projectid] Is Not Null And Not [projectid] = """")"
    [COLOR="#FF0000"]Set rs = CurrentDb.OpenRecordset(strSQL)[/COLOR]
    
        
    strSQL = "SELECT ,From QryopenstaandeFacturen,WHERE QryopenstaandeFacturen.[ProjectID] = " & Me.ProjectID & " ORDER BY QryopenstaandeFacturen.projectid"
    Set qTmp = CurrentDb.QueryDefs("tmpFactuur")
    qTmp.SQL = strSQL
    
    DoCmd.OutputTo acOutputReport, "factuur", acFormatPDF, "i:\factuur.pdf", False
    DoCmd.OutputTo acOutputReport, "factuur 2", acFormatPDF, "i:\factuur 2.pdf", False

    strAttach1 = "i:\factuur.pdf"
    strAttach2 = "i:\factuur 2.pdf"
    DoCmd.OutputTo acOutputReport, "factuur", acFormatPDF, strAttach1, False
    DoCmd.OutputTo acOutputReport, "factuur 2", acFormatPDF, strAttach2, False
    
    With objEmail
        .To = Email
        .Subject = "Night Warehouse Productivity Reports"
        .Body = "Hierbij ontvangt u de Night Warehouse Productivity Reports."
        .Display
        .Attachments.Add strAttach1
        .Attachments.Add strAttach2
    End With

strSQL = "SELECT ,From QryopenstaandeFacturen,WHERE QryopenstaandeFacturen.[ProjectID] = projectid ,ORDER BY QryopenstaandeFacturen.projectid"
Set qTmp = CurrentDb.QueryDefs("tmpFactuur")
    qTmp.SQL = strSQL


Kill strAttach1
Kill strAttach2
End Sub

wat rood is loopt die op vast .
 
Hij kan de recordset niet openen, en daar zit dus een fout in. Vang hem eens af met
Code:
    strSQL = "SELECT * FROM TmpFactuur WHERE ([projectid] Is Not Null And Not [projectid] = """")"
    tmp = InputBox("", "", strSQL)
en plak de string in een nieuwe query, dan zie je het snelst waar het fout gaat. Ik vermoed op het laatste deel, mits ProjectID numeriek is. Dan kun je namelijk niet op "" filteren, dat werkt alleen bij tekst.
 
het klopt dat die daar op vast loopt nu heb ik dit aan gepast maar werken nee
Code:
strSQL = "SELECT * FROM TmpFactuur WHERE [ProjectID] = " & Me.ProjectID & ""
    tmp = InputBox("", "", strSQL)
    Set rs = CurrentDb.OpenRecordset(strSQL)
    
        
    strSQL = "SELECT ,From QryopenstaandeFacturen,WHERE QryopenstaandeFacturen.[ProjectID] = " & Me.ProjectID & " ORDER BY QryopenstaandeFacturen.projectid"
    Set qTmp = CurrentDb.QueryDefs("tmpFactuur")
    qTmp.SQL = strSQL

hij geeft aan dat qTemp.SQL=strSQL verkeerdgespeld of ontbreekt
 
Waarom zet je dit ( & "") achteraan je SQL? Wat denk je dat dat doet?
Omdat dat helemaal niks doet of toevoegt, zit daar het probleem uiteraard niet :). Heb je qTemp wel gedefinieerd als QueryDef?
 
yep dat heb ik
Code:
Dim Email As String
Dim ProjectID As String, FileName As String, Filepath As String
Dim objOutlook As Outlook.Application
Dim objEmail As Outlook.MailItem
Dim strAttach1 As String, strAttach2 As String, strSQL As String
Dim qTmp As QueryDef
Dim tmp As Variant
Dim rs As Recordset


Email = DLookup("Factuurmail", "tblDebiteuren", "[DebID]=" & [DebID])
Set objOutlook = CreateObject("Outlook.application")
Set objEmail = objOutlook.CreateItem(olMailItem)

    
        
    strSQL = "SELECT ,From QryopenstaandeFacturen,WHERE (((QryopenstaandeFacturen.ProjectID) = me.projectID)),ORDER BY QryopenstaandeFacturen.projectid"
    Set qTmp = CurrentDb.QueryDefs("TmpFactuur")
    tmp = InputBox("", "", strSQL)
    qTmp.SQL = strSQL
    
    strSQL = "SELECT * FROM TmpFactuur WHERE [ProjectID] = Me.ProjectID"
    Set rs = CurrentDb.OpenRecordset(strSQL)
    
    DoCmd.OutputTo acOutputReport, "factuur", acFormatPDF, "i:\factuur.pdf", False
    DoCmd.OutputTo acOutputReport, "factuur 2", acFormatPDF, "i:\factuur 2.pdf", False

    strAttach1 = "i:\factuur.pdf"
    strAttach2 = "i:\factuur 2.pdf"
    DoCmd.OutputTo acOutputReport, "factuur", acFormatPDF, strAttach1, False
    DoCmd.OutputTo acOutputReport, "factuur 2", acFormatPDF, strAttach2, False
    
    With objEmail
        .To = Email
        .Subject = "Night Warehouse Productivity Reports"
        .Body = "Hierbij ontvangt u de Night Warehouse Productivity Reports."
        .Display
        .Attachments.Add strAttach1
        .Attachments.Add strAttach2
    End With

    strSQL = "SELECT ,From QryopenstaandeFacturen,WHERE QryopenstaandeFacturen.[ProjectID] = projectid ,ORDER BY QryopenstaandeFacturen.projectid"
    Set qTmp = CurrentDb.QueryDefs("tmpFactuur")
    qTmp.SQL = strSQL


Kill strAttach1
Kill strAttach2

de gehele code nog eens misschien dan iets duidelijker
 
Laatst bewerkt:
D'r zit weer een hele bizarre fout (volgens mij dan toch) in je eerste query; hoe komt die daar toch steeds weer in terecht? En je 2e query is ook niet logisch; je hebt de eerste immers al gefilterd op ProjectID dus er is geen enkele noodzaak om de tweede ook nog eens te filteren. Daar kán namelijk nooit een andere ProjectID in zitten!

1. Volgens mij kloppen je queries nog steeds niet.
Code:
    strSQL = "SELECT * FROM QryopenstaandeFacturen WHERE [projectid] = " & Me.ProjectID
    Set qTmp = CurrentDb.QueryDefs("TmpFactuur")
    qTmp.SQL = strSQL
    
    Set rs = CurrentDb.OpenRecordset("TmpFactuur")

2. Je blijft vasthouden aan het 2 keer exporteren van de pdf's. Ik zie geen enkel verschil tussen de 2x2 opdrachten, dus dan kan er toch één blok weg? Dan laat je dit staan, want dit lijkt mij logisch:
Code:
    strAttach1 = "i:\factuur.pdf"
    strAttach2 = "i:\factuur 2.pdf"
    DoCmd.OutputTo acOutputReport, "factuur", acFormatPDF, strAttach1, False
    DoCmd.OutputTo acOutputReport, "factuur 2", acFormatPDF, strAttach2, False

3. En na het mailen zet je weer zo'n rare SQL in tmpFactuur, maar waarom? Nergens voor nodig. Een tijdelijke query vul je elke keer op het moment dat je 'm nodig hebt. Boeien wat er dan na afloop in staat! Ik gebruik dus altijd maar één (hooguit 2) tijdelijke queries, en die gebruik ik dan voor alle rapporten, formulieren, exports etc. waar ik 'm nodig heb. Dus de ene keer staat in tmpQuery een Klanten selectie, een andere keer een Productenselectie. Boeit niet, het is maar een query en geen tabel.

Dus, na alle schoonmaak, ziet de macro er zo uit:
Code:
Sub Mailen()
Dim Email As String
Dim ProjectID As String, FileName As String, Filepath As String
Dim objOutlook As Outlook.Application
Dim objEmail As Outlook.MailItem
Dim strAttach1 As String, strAttach2 As String, strSQL As String
Dim qTmp As DAO.QueryDef
Dim rs As DAO.Recordset
Dim tmp As Variant

    Email = DLookup("Factuurmail", "tblDebiteuren", "[DebID]=" & [DebID])
    Set objOutlook = CreateObject("Outlook.application")
    Set objEmail = objOutlook.CreateItem(olMailItem)
    
    strSQL = "SELECT * FROM QryopenstaandeFacturen WHERE [projectid] = " & Me.ProjectID
    Set qTmp = CurrentDb.QueryDefs("TmpFactuur")
    qTmp.SQL = strSQL
    
    Set rs = CurrentDb.OpenRecordset("TmpFactuur")
    
    strAttach1 = "i:\factuur.pdf"
    strAttach2 = "i:\factuur 2.pdf"
    DoCmd.OutputTo acOutputReport, "factuur", acFormatPDF, strAttach1, False
    DoCmd.OutputTo acOutputReport, "factuur 2", acFormatPDF, strAttach2, False
    
    With objEmail
        .To = Email
        .Subject = "Night Warehouse Productivity Reports"
        .Body = "Hierbij ontvangt u de Night Warehouse Productivity Reports."
        .Display
        .Attachments.Add strAttach1
        .Attachments.Add strAttach2
    End With

    Kill strAttach1
    Kill strAttach2

End Sub
 
dank ik weet dat ik nog veel moet oefenen met sql
maar factuur wordt nog steeds niet gefilterd de bijlage wel die is perfect hoe pas ik dit aan
 
je hebt hierbij een Factuur en Factuur 2
factuur is dus de rekening zelf en de Facttru 2 is overzicht of wel specificatie van de gewerkte uren.
vandaar en ze moet beiden verstuurd worden naar de klant met filter debid en projectid .
nu is zo dat factuur2 goed wordt aangemaakt maar factuur niet hier krijg ik alle documenten ofwel projecten.
hoop dat je het begrijpt
 
Beide rapporten moeten dus gefilterd worden op Me.ProjectID. Je past nu alleen de SQL aan voor tmpFactuur. Ik ging er dus vanuit dat beide rapporten dezelfde query gebruiken. Als dat niet zo is, dan moet je de andere SQL dus op dezelfde manier aanpassen.
 
oké vandaar dat ik er twee had staan , maar geef niet . ga het proberen en heb nu mooi voor beeld dus ......
je hoort of gelukt is
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan