Opgelost Datum in email tekst

Dit topic is als opgelost gemarkeerd
Ik exporteer eerst het rapport.
Ik heb een mail knop gemaakt (zie hieronder), deze maakt de email aan en voegt het rapport in de bijlage toe.

Code:
Private Sub Knop9_Click()
Dim OutApp As Object
Dim OutMail As Object
Dim objoutlookaccount As Object
Dim strTo As String, strBody As String, SigString As String
Dim MailAccount As Object
Dim objOutlook As Object
Dim rs As DAO.Recordset
    
  strBody = "<BODY style=font-size:11pt;font-family:Calibri>Hallo allemaal," & "<br><br>" & _
            "Hierbij de aanstellingen voor - en - ." & "<br>" & _
            "Graag z.s.m. bericht als je niet beschikbaar bent, hoor ik niets, ga ik er vanuit dat je beschikbaar bent.</BODY>"
            
  On Error Resume Next
    SigString = Environ("appData") & "Roaming\Microsoft\Handtekeningen\Scheidsrechters.htm"
    On Error GoTo 0

    Set rs = CurrentDb.OpenRecordset("emailadressenscheidsrechters")
    rs.MoveFirst
    While Not rs.EOF
      strTo = strTo & IIf(strTo = "", "", ";") & rs!Email
      rs.MoveNext
    Wend
    
    If Dir(SigString) <> "" Then
        Signature = GetBoiler(SigString)
    Else
        Signature = ""
    End If

    Set objOutlook = CreateObject("Outlook.Application")
                Set objoutlookaccount = GetOutlookAccount(objOutlook, "scheidsrechters")
                With objOutlook.CreateItem(0)
                Set .sendusingaccount = objoutlookaccount
                .display
                .BCC = strTo
                .Subject = "Aanstellingen"
                .HTMLbody = strBody & .HTMLbody
                .display  'Or use send.
                .Attachments.Add "\\NAS_ITAART\home\OBW\Database\Aanstellingen.pdf"
            End With

End Sub
 
En waar wil je de datums? En waar haal je die gegevens vandaan?
 
Als je de data in een formulier invult (zie ook de raad van Peter), kan je die zowel als criteria gebruiken in de basisquery voor het rapport, als in de procedure die de mail genereert als parameter/argument meegeven.
 
En waar wil je de datums? En waar haal je die gegevens vandaan?
datums moeten in deze regel
strBody = "<BODY style=font-size:11pt;font-family:Calibri>Hallo allemaal," & "<br><br>" & _
"Hierbij de aanstellingen voor - en - ." & "<br>" & _

En waar haal je die gegevens vandaan?
Ik heb, zoals je aangaf, 2 velden aan de query toegevoegd:
1706812242915.png

Code:
PARAMETERS StartDatum DateTime, EindDatum DateTime;
SELECT [Sl-excel-export].Wedstrijddatum, [Teams kort].Afkort, [Sl-excel-export].Tijd, [Sl-excel-export].Thuisteam, [Sl-excel-export].Uitteam, Scheidsrechters.Naam, Velden.[Veld kort], [Sl-excel-export].Veld, Soort_wedstrijd.[soort kort], [StartDatum] AS Expr1, [EindDatum] AS Expr2
FROM ((([Sl-excel-export] LEFT JOIN Scheidsrechters ON [Sl-excel-export].Scheidsrechter = Scheidsrechters.Sportlink) LEFT JOIN [Teams kort] ON [Sl-excel-export].Team = [Teams kort].Team) INNER JOIN Soort_wedstrijd ON [Sl-excel-export].[Soort wedstrijd] = Soort_wedstrijd.soort) INNER JOIN Velden ON [Sl-excel-export].Veld = Velden.Veld
WHERE ((([Sl-excel-export].Wedstrijddatum) Between [StartDatum] And [EindDatum]));
 
Of, (echt geen noodzaak voor een formulier) je haalt de twee datums met een Recordset uit de query, en gaat vervolgens verder met de mail.
 
En dat kruist elkaar dan net :). Zelf had ik de veldnamen voor de parametervelden een leukere naam gegeven dan Expr1 en Expr2, maar what’s in a name? Die kun je dus prima gebruiken lijkt mij.
 
Ik heb Expr1 en Expr2 idd maar gewijzigd naar Start en Eind, net zo duidelijk😊

je haalt de twee datums met een Recordset uit de query, en gaat vervolgens verder met de mail.

Dit krijg ik nog niet voor elkaar, heb aan de macro toegevoegd:
Dim rs1 As DAO.Recordset

Set rs1 = CurrentDb.OpenRecordset("Programma thuis")

Dan loop ik vast, wat ik ook probeer, melding: Er zijn te weinig parameters. Het verwachte aantal is 2
 
Is dat je query met die datumvelden? Er vanuit gaande dat je één of meer records hebt in die recordset, en dat de twee datumvelden dan altijd dezelfde datum laten zien kun je die met een Top 1 recordset opvragen:
Code:
Set rs1 = CurrentDB.OpenRecordset("Select Top 1 Start, Eind From [Programma Thuis]")
Maar het is denk ik beter om de hele query vanuit VBA te doen, dus met twee Inputboxen de datums vragen, en die dan in de query zetten.
 
Is dat je query met die datumvelden? Er vanuit gaande dat je één of meer records hebt in die recordset, en dat de twee datumvelden dan altijd dezelfde datum laten zien kun je die met een Top 1 recordset opvragen:
Code:
Set rs1 = CurrentDB.OpenRecordset("Select Top 1 Start, Eind From [Programma Thuis]")
Maar het is denk ik beter om de hele query vanuit VBA te doen, dus met twee Inputboxen de datums vragen, en die dan in de query zetten.
Klinkt goed, zou alleen niet weten hoe ik dat moet doen;). Ben al blij dat ik al zover gekomen ben dat ik het in stappen voor elkaar heb gekregen.
Ik heb de code in de macro geplakt, wat ik ook probeer, ik blijf dezelfde foutmelding krijgen.
 
Dan wordt hert toch echt tijd voor een voorbeeldje :).
 
en zeggen dat het zo eenvoudig kan zijn als je een formulier met 2 ongebonden velden voor de datum input gebruikt. Dan kan je die zowel gebruiken als parameters in je query als voor de parameters in je VBA routine om de mail te sturen. Maar waarom eenvoudig als het ook moeilijk kan.
 
Een extra formulier maakt het niet makkelijker, maar moeilijker. Want het is meer werk om een formulier erbij te maken. Twee datums kun je prima met een InputBox opvragen en gebruiken in code en/of queries.
 
Dan wordt hert toch echt tijd voor een voorbeeldje :).
Ik heb een formulier gemaakt (menu) gemaakt met daarop de knop die een PDF genereerd middels een ingesloten macro:
1707341714810.png
De ingesloten macro:
1707341739231.png
Hiermee exporteer ik het rapport op basis van een query die vraagt om de begin en eind datum als *.pdf

Vervolgens start ik met een knop de macro met de code zoals hierboven staat om de mail te genereren en het geëxporteerde rapport in de bijlage te zetten.

kort door de bocht, deze beide handelingen moeten in 1 macro komen, eerst moet het rapport gegenereerd worden, vervolgens moet er een mail aangemaakt worden met het rapport als *.pdf in de bijlage en de begin en einddatum in de body van de email.
 
Waarom je zowel macro's gebruikt als VBA procedures is 'totally beyond me', om het maar eens in een andere taal te zeggen. Ofwel je leert jezelf met macro's te werken, of je komt er na 10 minuten achter dat dat helemaal niks is, en je stapt over op VBA. Mij lijkt de keuze simpel. Alles wat je op een moeilijke manier met een macro kan doen, kan simpel met VBA.
En een plaatje is natuurlijk niet wat ik met 'een voorbeeldje' bedoel :).
 
Waarom je zowel macro's gebruikt als VBA procedures is 'totally beyond me', om het maar eens in een andere taal te zeggen. Ofwel je leert jezelf met macro's te werken, of je komt er na 10 minuten achter dat dat helemaal niks is, en je stapt over op VBA. Mij lijkt de keuze simpel. Alles wat je op een moeilijke manier met een macro kan doen, kan simpel met VBA.
En een plaatje is natuurlijk niet wat ik met 'een voorbeeldje' bedoel :).
Zie bijgevoegd bestand, eerst exporteer ik de aanstellingen, vervolgens mail ik deze dan naar de scheidsrechters en naar het kader. Het mooiste zou zijn, dat ik dit in 1 actie met een knop kan uitvoeren.
 

Bijlagen

  • Scheidsrechters - kopie.zip
    145,3 KB · Weergaven: 2
Ik heb een aantal zaken veranderd (ik vind verbeterd :)), dus kijk maar even of je er zo mee kunt leven. Belangrijkste wijzigingen: ik heb het email adressenveld in de tabel Scheidsrechters gezet. Tenzij je meerdere email adressen van scheidsrechters gebruikt, is het zinloos en overbodig om die in een aparte tabel te zetten. Bovendien maak je het leven alleen maar moeilijker voor jezelf. Nou weet ik niet of jouw leven van een leien dakje loopt, en dat je dus behoefte hebt aan wat extra spanning, maar ik zou daar geen behoefte aan hebben :D.
Tweede wijziging: ik heb de complete export van pdf en email in één routine gezet. Ook dat lijkt mij een stuk logischer dan om met twee knoppen een handeling uit te voeren die ook met één knop kan.

Technisch nog een opmerking: ik heb de parameter velden verwijderd uit de rapportquery. De datums worden nu, zoals ik ook al een paar keer schreef, in de procedure opgevraagd en dan hard in de query gezet. Ook een stukje handiger, vind ik.
 

Bijlagen

  • Scheidsrechters.zip
    234,6 KB · Weergaven: 4
Thx!!! Ik heb de tabellen weer teruggezet en getest, werkt perfect! De reden dat ik een aparte emaillijst had voor de scheidsrechters, is omdat de tabel met scheidsrechter vrij groot is. Ik heb nu bij de scheidsrechters die de mail niet hoeven te ontvangen het emailadres weggehaald. Mocht een van hen in de toekomst toch een mail moeten ontvangen, kan ik het emailadres weer toevoegen.
Ik ga zelf proberen om een zelfde knop te maken om de mail naar trainers en leiders te sturen, maar dat moet met jouw input wel lukken.
Nogmaals dank!!
 
Is het niet gemakkelijke om een veld toe te voegen E-mail Yes/No dan het email adres weg te halen en eventueel later terug te zetten?
 
Is het niet gemakkelijke om een veld toe te voegen E-mail Yes/No dan het email adres weg te halen en eventueel later terug te zetten?
Hoeft niet, ik heb de lijst samengevoegd, als je in het veld "email" geen emailadres invult, komt deze ook niet mee naar Outlook. Ik hoef nu ook niet meer in 2 lijsten een scheidsrechter toevoegen. Dus winwin!
 
Laatst bewerkt:
Thx!!! Ik heb de tabellen weer teruggezet en getest, werkt perfect! De reden dat ik een aparte emaillijst had voor de scheidsrechters, is omdat de tabel met scheidsrechter vrij groot is. Ik heb nu bij de scheidsrechters die de mail niet hoeven te ontvangen het emailadres weggehaald. Mocht een van hen in de toekomst toch een mail moeten ontvangen, kan ik het emailadres weer toevoegen.
Ik ga zelf proberen om een zelfde knop te maken om de mail naar trainers en leiders te sturen, maar dat moet met jouw input wel lukken.
Nogmaals dank!!
Ook de tweede knop is gelukt. Heb ook de datums toegevoegd in de titel van de mail, vond ik net zo duidelijk.
 
Terug
Bovenaan Onderaan