Avatar billede 3xa Nybegynder
17. oktober 2001 - 23:54 Der er 7 kommentarer og
1 løsning

Automatisk udsendelse af E-mails

Jeg prøver at få Access til at udsende reports til e-mailadresser som findes i en tabel. Dvs. at databasen skal gå ind i en tabel, og finde et række email-adresser, som alle skal have deres egen specifikke report... kan Access klare dette? Jeg har prøvet med lidt macroer, men tricket skulle være at jeg skal kunne indtaste e-mailadresse og reportnavn i en tabel, og ikke i en macro...
Avatar billede terry Ekspert
18. oktober 2001 - 08:35 #1
what are you going to use for sending emails? EG: Outlook
Avatar billede Keld Nielsen Professor
18. oktober 2001 - 09:09 #2
Noget i stil med mit spørgsmål - jeg fik det løst!
http://www.eksperten.dk/spm/9111
Avatar billede fdata Forsker
18. oktober 2001 - 11:07 #3
Du kan klares med en stump VBA kode i stil med:

Function SendReports()
  Dim rst As Recordset
  Set rst = CurrentDb.OpenRecordset(\"EmailKunder\")
  With rst
    Do Until .EOF
      DoCmd.SendObject acSendReport, \"RapportNavn\", , .Fields(\"EmailAdr\"), , , \"Emnet\", \"Meddelelsen\", False
      .MoveNext
    Loop
    .Close
  End With
  Set rst = Nothing
End Function

(udskift selv tabel- og feltnavn)
(se også hjælpen til SendObject)
Avatar billede 3xa Nybegynder
30. oktober 2001 - 12:30 #4
Jeg ved ikke om dette her er skrevet før, for der dukkede ikke noget op.
Men Fdata er inde på noget af det rigtige, dog skal det være muligt at sende forskellige rapporter til forskellige E-mail adresser. Derfor skal der være et felt i tabellen der hedder E-mail, og et der hedder rapportnavn. Der skal også henvises til en anden tabel, hvor man skal kunne skrive emne og meddelelse.
Avatar billede fdata Forsker
30. oktober 2001 - 18:59 #5
Hvis jeg har forstået dig korrekt, burde en konstruktion som følgende virke:

Function SendReports()
  Dim rst As Recordset
  Set rst = CurrentDb.OpenRecordset(\"EmailKunder\")
  With rst
    Do Until .EOF
      DoCmd.SendObject acSendReport, .Fields(\"RapportNavn\"), , .Fields(\"EmailAdr\"), , , Dlookup(\"[Emnet]\",\"EmneTabel\",\"[ID]=\" & .Fields(\"EmneRef\")), Dlookup(\"[Meddelelsen]\",\"EmneTabel\",\"[ID]=\" & .Fields(\"MeddRef\")), False
      .MoveNext
    Loop
    .Close
  End With
  Set rst = Nothing
End Function
Avatar billede 3xa Nybegynder
01. november 2001 - 10:12 #6
Hej Fdata, nu er jeg en rigtig amatør til det her, men jeg er sikker på at dit forslag virker efter hensigten - bare ikke med mig ved roret. Vil du ikke nok skrive hvad jeg skal bruge for at din konstruktion virker? Eks. jeg skal bruge en tabel der hedder Emailkunder, med et felt der hedder bla bla og et der hedder bla bla, og en form der hedder bla bla...? Undskyld min ringe viden, men jeg skal igang med at lære Visual Basic nu, så kan det være at jeg bedre kan følge med \"hjernerne\" senere...
Avatar billede fdata Forsker
01. november 2001 - 18:01 #7
No problem. For at ovenstående skal funke, skal du - som du allerede har gættet - have en tabel ved navn \"EmailKunder\".
I denne forudsættes det, at du har felterne
- EmailAdr (med personens Email adr)
- RapportNavn (rapporten, som vedkommende skal have)
- EmneRef (nummeret på emnet i EmneTabellen)
- MeddRef (nummeret på meddelelsen i EmneTabellen)

Desuden skal du oprette en \"EmneTabel\" med tre felter: ID, Emnet og Meddelelsen.

Konstruktionen med Emne og Meddelelse i den samme tabel er ikke helt smart; men jeg forstod på dit spørgsmål, at du ønskede det sådan. Set i det nye lys, tror jeg, du skal opdele den i to: EmneTabel (To felter: ID, Emnet) og MeddTabel (To felter: ID, Meddelelsen).

Brug så denne sætning:
DoCmd.SendObject acSendReport, .Fields(\"RapportNavn\"), , .Fields(\"EmailAdr\"), , , Dlookup(\"[Emnet]\",\"EmneTabel\",\"[ID]=\" & .Fields(\"EmneRef\")), Dlookup(\"[Meddelelsen]\",\"MeddTabel\",\"[ID]=\" & .Fields(\"MeddRef\")), False

Hvis nu Emne og meddelelse altid danner par, kan du jo også droppe MeddRef og nøjes med at slå op i Emnetabellen med EmneRef.

Brug så denne sætning:
DoCmd.SendObject acSendReport, .Fields(\"RapportNavn\"), , .Fields(\"EmailAdr\"), , , Dlookup(\"[Emnet]\",\"EmneTabel\",\"[ID]=\" & .Fields(\"EmneRef\")), Dlookup(\"[Meddelelsen]\",\"EmneTabel\",\"[ID]=\" & .Fields(\"EmneRef\")), False

Funktionen sætter du ind i et modul. Du kører den med F5 eller kalder den via en makro eller fra en knap på en formular eller ......

Håber, det er klart som blæk  ;o)

Avatar billede 3xa Nybegynder
02. november 2001 - 11:22 #8
Tusinde Tak Fdata - du er dagens mand i skysauce!, Du er for mig hvad supermand er for Clark Kent!!! Det virker bare perfekt....
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