Avatar billede Slettet bruger
20. marts 2006 - 05:32 Der er 4 kommentarer og
1 løsning

Email af rapportskema

Hej har sammensat nedenstående kode, til forsendelse af rapporter dannet ud fra en forspørgelse.

Jeg har en db med emailmodtager og hvilken forspørgelse der skal køres til hver enkelt modtager. Men da hver modtager er en record i sig selv, hvordan for jeg så lavet koden at den samler de emailmodtager der skal have den samme rapport i en mail????


Function Email_Click()
Dim rst As Recordset
Dim strDate As String
Set rst = CurrentDb.OpenRecordset("EmailModtager")

strDate = Format(Now, "dd-mm-yyyy")

With rst
    Do Until .EOF
    DoCmd.SendObject acSendQuery, .Fields("RapportNavn"), acFormatXLS, .Fields("EmailAdr"), , , DLookup("[Emne]", "EmneTabel", "[ID]=" & .Fields("EmneRef")) & " " & strDate, DLookup("[Meddelelsen]", "EmneTabel", "[ID]=" & .Fields("EmneRef")), True
    .MoveNext
    Loop
    .Close
End With
Set rst = Nothing
End Function
Avatar billede mugs Novice
20. marts 2006 - 05:48 #1
Jeg har skrevet lidt om det her i pkt. 12. Men det betyder at du skal markere hver enkelt modtager, og jeg antager, at er ude efter lidt mere automatiseret:

http://www.eksperten.dk/artikler/371
Avatar billede fdata Forsker
20. marts 2006 - 18:17 #2
Hvis to modtagere skal modtage har samme værdi i RapportNavn, har de så også altid samme værdi i EmneRef?
Avatar billede fdata Forsker
20. marts 2006 - 18:32 #3
Pyt. Det er ligemeget. Et bud på en (ikke-testet) løsning::

Function Email_Click()
  Dim rst As Recordset
  Dim RappRst As Recordset
  Dim strDate As String
  Dim RapNavn As String
  Dim Recipient As String
  Dim EmneRef As Long
  Dim Emne As String
  Dim Medd As String
   
  strDate = Format(Now, "dd-mm-yyyy")
   
  ' Hent alle rapportnavnene/emner
  Set RappRst = CurrentDb.OpenRecordset("SELECT RapportNavn, EmneRef FROM EmailModtager GROUP BY RapportNavn, EmneRef;")
  Do Until RappRst.EOF
   
    RapNavn = RappRst.Fields("RapportNavn")
    EmneRef = RappRst.Fields("EmneRef")
   
    Emne = DLookup("[Emne]", "EmneTabel", "[ID]=" & EmneRef)
    Medd = DLookup("[Meddelelsen]", "EmneTabel", "[ID]=" & EmneRef)
   
    Recipient = ""
    ' Hent alle modtagere af den aktuelle rapport med samme emne
    Set rst = CurrentDb.OpenRecordset("SELECT EmailModtager.* FROM EmailModtager WHERE RapportNavn='" & RapNavn & "' AND EmneRef=" & EmneRef)
    With rst
      ' Gennemløb modtagerne
      Do Until .EOF
        Recipient = Recipient & .Fields("EmailAdr") & ";"
        .MoveNext
      Loop
      ' Fjern sidste ;
      Recipient = Left(Recipient, Len(Recipient) - 1)
     
      DoCmd.SendObject acSendQuery, RapNavn, acFormatXLS, Recipient, , , Emne & " " & strDate, Medd, True
      .Close
    End With
    RappRst.MoveNext
  Loop
  RappRst.Close
 
  Set rst = Nothing
  Set RappRst = Nothing
End Function
Avatar billede Slettet bruger
21. marts 2006 - 00:17 #4
Det var lige den kode jeg skulle bruge, og den virker. Jeg har ikke ændret noget som helst iden

Tak til fdata!
Avatar billede fdata Forsker
21. marts 2006 - 09:30 #5
Herligt! Tak for point  ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester