PDA

Vollständige Version anzeigen : Automatische Outlook Email


MickeyZ
17.10.2011, 10:07
Hallo zusammen,

ich habe ein Formular welches auf einer Abfrage beruht, die ein Feld Verteilerlisten beinhaltet. Für jeden Verteiler gibt es unterschiedliche Email-Adressen von einem Journalisten. Bis jetzt habe ich es so gemacht, dass ich für jede Verteilerliste eine Abfrage gemacht habe und dann mit folgendem Code eine Outlook Email generiert habe:

Dim objOutlook As Outlook.Application
Dim objNameSpace As Outlook.NameSpace
Dim objDefaultEMail As Outlook.MAPIFolder
Dim objEMail As Outlook.MailItem
Dim rs As DAO.Recordset
Dim strTo As String

'//Outlook öffnen und eine neue EMail erstellen
Set objOutlook = New Outlook.Application
Set objNameSpace = objOutlook.GetNamespace("MAPI")
Set objDefaultEMail = objNameSpace.GetDefaultFolder(olFolderOutbox)
Set objEMail = objDefaultEMail.Items.Add(olMailItem)


Set rs = CurrentDb.OpenRecordset("qry_versand_an_verteiler")

Set objEMail = objDefaultEMail.Items.Add(olMailItem)
strTo = vbNullString
While Not rs.EOF
strTo = strTo & ";" & rs![Versand_Redaktion]
rs.MoveNext
Wend
objEMail.BCC = strTo
objEMail.Subject = "test"
'If Len(Nz(Me!txtText, "")) <> 0 Then objEMail.Body = Me!txtText
objEMail.Display



'//Aufraeumen nicht vergessen!

rs.Close
Set rs = Nothing
Set objOutlook = Nothing
Set objNameSpace = Nothing
Set objDefaultEMail = Nothing
Set objEMail = Nothing

Jetzt habe ich aber in mein Formular ein DropDown-Feld gemacht, in dem ich den gewünschten Verteiler auswähle und in meinem Formular direkt danach selektiert wird. Wie schaffe ich es jetzt, daß mir eine Mail generiert wird nur mit den Email-Adressen der Selektion? Das Feld der jeweiligen Email-Adresse heißt jetzt [Email_Journalist].

Danke im voraus!

Maxel
17.10.2011, 10:18
Hallo,

statt
Set rs = CurrentDb.OpenRecordset("qry_versand_an_verteiler")
muss es nun in etwa so heißen:
Set rs = CurrentDb.OpenRecordset("Select * From DeineTabelle Where Verteiler = " & DeinKombifeld)
Das musst Du halt noch anpassen.

ebs17
17.10.2011, 10:24
Wie hast Du den Zusammenhang zwischen Mailadressen und Verteilerlisten organisiert?

Vorstellbar wäre eine m:n-Beziehung. Dann könntest Du in der Zwischentabelle mit Auswahl einer Verteilerliste (FK) die zugeordneten Mailadressen (FK) ermitteln.

Das ist aber reine Datenbankarbeit. Mit Outlook und Erstellung einer Mail hat das (noch) nichts zu tun.

MickeyZ
17.10.2011, 10:25
ich habe die Zeile jetzt folgendermaßen angepasst:

Set rs = CurrentDb.OpenRecordset("Select * From qry_Versand_an_Verteiler Where Verteilername = " & suverteilername)


bekomme aber die Fehlermeldung: 2 Parameter wurden erwartet, aber es wurden zuwenig Parameter übergeben.
Muß ich irgendwie angeben, dass das Kombinationsfeld ja in meinem Formular existiert?

MickeyZ
17.10.2011, 10:29
@ebs17: ich habe eine Tabelle, dort stehen in dem Feld Verteilername die Verteiler drin und in dem Feld Email_Journalist die dazugehörige Email-Adresse.
Auf der Tabelle liegt ein Formular über das ich mit einem Kombifeld nach einem gewünschten Verteilernamen filtere. Somit habe ich dann nur die gewünschten Datensätze. Unter anderem auch die Email-Adresse. Und diese Ergebnismenge der Email-Adressen möchte ich nun gerne in eine Outlook-Mail übergeben...

Aber das fluppt nicht. Vorher mit den tausend verschiedenen Abfragen war das kein Problem, aber das möchte ich so nicht weitermachen...

ebs17
17.10.2011, 10:41
Aber das fluppt nicht.
Warum nicht? Nach einem Feld filtern kann man genau so gut über einen Parameter (sogar besser) als wenn man pro Vergleichswert eine eigene Abfrage erstellt.

Wiederholung: Vor einer Verarbeitung von Daten sollte man deren Struktur durchdenken.

MickeyZ
17.10.2011, 10:44
Weil bei jeder Änderung, die die Abfragen betreffen jede einzelne Abfrage angepackt werden muß. Darum soll das Ganze über ein einfaches Kombinationsfeld gemacht werden.

Ist es denn nicht möglich, dass ich ein Feld dieses Filterergebnisses irgendwie auslesen lasse??

Maxel
17.10.2011, 11:03
Wenn Verteilername Text ist, muss es halt so lauten:
Set rs = CurrentDb.OpenRecordset("Select * From qry_Versand_an_Verteiler Where Verteilername = '" & Me!suverteilername & "'")
Heißt das Kombifeld auch suverteilername?

MickeyZ
17.10.2011, 11:06
Danke!!