Uit meerdere query's records oproepen en mail sturen

Status
Niet open voor verdere reacties.

abevleeming

Gebruiker
Lid geworden
30 jan 2012
Berichten
436
Beste forumleden,


Ik ben bezig met mijn eerste access database en leg de lat meteen hoog en weet ook niet of het allemaal kan wat ik wil. Ik ga het proberen hieronder zo duidelijk mogelijk aan te geven en ter ondersteuning heb ik het bestand en wat screenshots (van hoe ik het zou willen) erbij gezet. Ik ben bezig met een redelijk complex contacten bestand waarbij ik verschillende query's heb aangemaakt. Ik wil via een apart scherm met checkboxen verschillende query's op kunnen roepen en in een lijst laten weergeven (zie voorbeeld pop up1). Door bij deze lijst weer alles aan te kunnen vinken wil ik dat access automatisch de emailadressen van deze personen in de "bcc" zet van een op te stellen email en de (in voorbeeld pop up2) ingevoerde tekst in de mail te zetten.

het mooiste zou zijn als in de mail ook de aanhef automatisch aangevuld wordt maar dat kan volgens mij alleen als je word er tussendoor uitvoert.

Kunnen jullie mij vertellen wat wel en niet mogelijk is en wat de beste aanpak is?
Het bestand is te groot voor dit forum dus even via dropbox; https://www.dropbox.com/s/sbff6uma59f3mit/Studenten%20SOM%20-%20kopie.accdb

Mijn dank is groot, groter, grootst!
 

Bijlagen

  • Voorbeeld pop up2.jpg
    Voorbeeld pop up2.jpg
    75,9 KB · Weergaven: 56
  • Voorbeeld pop up1.jpg
    Voorbeeld pop up1.jpg
    96,3 KB · Weergaven: 47
Code:
With CurrentDb.OpenRecordset("Verzendlijst")
    .MoveFirst
    Do While Not .EOF
        'defineren ontvanger en actienemer met veld uit recordset
        Ontvanger = !Email
        actienemer = !actienemer
        
        'report openen voor eerste naam
        
       
            DoCmd.OpenReport "rapportnaam", acViewPreview, , "uitvoerder = '" & actienemer & "'"
            'report verzenden naar eerste ontvanger
            DoCmd.SendObject acSendReport, , acFormatSNP, Ontvanger, , , "onderwerp", "mail tekst", False
            'rapportsluiten
            DoCmd.Close acReport, "rapportnaam", acSaveNo
            'voorgaande herhalen
            .MoveNext
      
    'herhalen tot einde van de recordset
    Loop

End With

Ik gebruik deze code om een rapport gefilterd per actienemer naar verschillende actienemers te sturen. Hopenlijk kan je er iets mee.
 
Mis ik het formulier dat je in je plaatjes hebt staan in de db?
 
het formulier in de plaatjes staan inderdaad niet in de database. Ik kan de geen mogelijkheid vinden om die lijstfunctie van pop up 1 er in te zetten. Het formulier uit de plaatjes is slechts een paint kunstwerkje... Hebben jullie tips of weten jullie een mooi alternatief voor zoiets?

jwaque: Heel erg bedankt voor de tip, klinkt in ieder geval handig, maar ik ben dermate leek dat ik het niet direct voor me zie/weet wat ik moet aanpassen;)
 
Een lijstfunctie er in zetten? Ik snap niet helemaal wat je bedoelt, maar het is vrij simpel om de bestaande queries in een keuzelijst weer te geven. Dat heb ik ook beschreven in (een van de latere) hoofdstukken van de Access cursus. Tabellen en queries worden in een systeemtabel opgeslagen, en die kun je gewoon opvragen. Door te filteren kun je ofwel de tabellen, ofwel de queries ofwel allebei laten zien.
 
met lijstfunctie bedoel ik dat ik wil dat Access een query maakt op basis van de geselecteerde "groepen", dan die query filtert op duplicaten en vervolgens weergeeft zoals in pop up 1, zodat ik nog handmatig personen uit de verzendlijst kan halen.
 
ik ga mijn best doen om het uit te leggen maar ik ben niet zo'n goede leermeester als octafish.
ik heb een query: verzendlijst
Code:
With CurrentDb.OpenRecordset("Verzendlijst")
Deze bevat de velden: email, actienemer
In het resultaat van de query staan alleen de mensen die een email moeten krijgen

Ook heb ik een rapport wat gegroepeerd is op actienemer: rapportnaam met de inhoud die bij de mail moet worden gesloten.

vervolgens ga ik naar het begin van de query
Code:
.MoveFirst
    Do While Not .EOF
do while not EOF (end of file) anders gezegt doe met de eerste regel van de query de code tot de loop dan met de volgende regel uit de query net zo lang tot je aan het einde van de query bent.
de gegevens van de ontvanger (velden email en actienemer) voeg ik toe aan een variabele nl: ontvanger en actienemer dmv van de code. De ! staat voor gebruik query veld
ontvanger = !email


Code:
'defineren ontvanger en actienemer met veld uit recordset
        Ontvanger = !Email
        actienemer = !actienemer
nu wordt het rapport geopend en wordt dit gefilter door uitvoerder (was handig geweest om hier ook de term actienemer te gebruiken) gelijk te maken als actienemer.
'report openen voor eerste naam


Code:
     DoCmd.OpenReport "rapportnaam", acViewPreview, , "uitvoerder = '" & actienemer & "'"
nu het rapport open is (en gefilterd met de gegevens die je wil verzenden) kan je het verzenden.
Code:
          'report verzenden naar eerste ontvanger
            DoCmd.SendObject acSendReport, , acFormatSNP, Ontvanger, , , "onderwerp", "mail tekst", False
tot slot het rapportsluiten
Code:
    'rapportsluiten
            DoCmd.Close acReport, "rapportnaam", acSaveNo
'voorgaande herhalen
Code:
 .MoveNext
      
    'herhalen tot einde van de recordset
    Loop

End With

ik hoop dat dit het wat duidelijker maakt. Om een vba code aan een knop te hangen maak ik altijd een knop op een formulier en bij de wizard zeg ik direct voltooien zonder iets in te stellen. Als je dan naar de eigenschappen van de knop gaat kan je bij gebeurtenissen: bij klikken op de ... klikken en dan kies je opbouwfunctie voor programmacode. Hierin kan je de vba code plaatsen.
succes.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan