Access-o-Mania

Access-Forum => Access Programmierung => Thema gestartet von: BranBern am September 25, 2014, 12:44:30

Titel: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 25, 2014, 12:44:30
Hallo,

vermutlich seh ich den Wald vor lauter Bäumen nicht (google und durchforste Stundenlang euer Forum und finde nichts passendes für mich).

Mein Anliegen, welches ihr mir mit Sicherheit aus dem Stehgreif beantworten könnt und ich mir als totaler Forums-Neuling frecherweise hier vorstellen darf:

Endzustand sollte sein, dass ich einen Button auf der Hauptübersicht (eigenes Formular) klicke, und mir Access anhand einer Abfrage die ausgewerteten e-Mail Adressen an Windows Live Mail übergibt.

Hab alles soweit im Griff - nur wie ich das lösen (VBA,....) soll - da weiß ich nicht mal wo ich anfangen soll...

Ist Stand:

Tabelle "Stammdaten" mit den Kundendaten - relevant für mein Anliegen sind folgende Kriterien:

Zwei Email-Felder pro Datensatz "Email 1" und "Email 2"

Einem NachschlageFeld "Einstufung" (welches aus der Tabelle "Einstufung" je nach Kriterium "Arzt, "Lehrer"...usw enthält)


meine benötigte Funktion, die Schaltfläche "eMail versenden" soll nun folgendes für mich erledigen:

Sie fragt mich, an welche Gruppe ich eine Mail versenden möchte - ich tippe "Arzt" (als Abfragebeispiel aus der Tabelle "Einstufung") ein - und Access übergibt alle Mailadressen (je nachdem ob beide Felder befüllt sind) der Tabelle "Stammdaten", welche als Ärzte eingestuft sind an Windows Live Mail weiter (neue Mail - im bcc Feld werden die Adressen autom. eingetragen)

Entsprechende Beziehungen, damit die Abfrage funktioniert ist bereits vorhanden.....

Wer kann mir da einen entsprechenden Code basteln?????

Vielen Dank,
Bernhard
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: DF6GL am September 25, 2014, 12:59:05
Hallo,

die Frage hier wäre nicht nach dem Zusammenstellen eines Codes, sondern danach, ob Windows Live-Mail überhaupt in der Lage ist, ferngesteuert Adressen zu akzeptieren und zu versenden.. (Was ist mit  Nachrichtentext und Attachments?)

Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 25, 2014, 13:08:01
Hallo,

anhand meiner Recherchen geh ich davon aus, dass Live Mail das kann - alternativ würde Outlook auch als Mailclient in Frage kommen.

Nachrichtentext und Attachments sollen nicht berücksichtigt werden - das "Endprodukt des Code's" sollte sein, dass Access im Live Mail eine Neue Mail beginnt, die Adressen ins Bcc befüllt ich dann Betreff und Text erfasse und die Mail "manuell" gesendet wird...

Es soll mir quasi vereinfachen, nur die Access DB zu warten, aber nicht gleichzeitig irgendwelche Mailverteiler im Mailclient abändern zu müssen....
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: DF6GL am September 25, 2014, 15:01:56
Hallo,

zeig mir die Recherche-Ergebnisse, wie man Live Mail fernsteuert...
Wenn Live Mail das registrierte Standard-Email-Programm ist, könnte Folgendes funktionieren(Luftcode):




In einem Standardmodul:
Public Declare Function ShellExecute Lib "Shell32.dll" _
Alias "ShellExecuteA" (ByVal hWnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long



Als Ereignisprozedur für eine Schaltfläche namens "btnEMail"  auf einem Formular:

Sub btnEMail_Click()

Dim bcc as String, strSQL as String, rs as Dao.Recordset

strSQL = "Select [EMail 1] & ';' & [EMail 2] as Email from Stammdaten where  Einstufung = '" & Me!Einstufung & "'"

Set rs = Currentdb.Openrecordset (strSQL, dbOpenSnapshot)
Do Until rs.Eof
bcc= bcc & ";" & rs(0)
rs.MoveNext
Loop

ShellExecute 0, "Open", "mailto:" & "&bcc= " & bcc, "", "", 1

rs.Close:Set rs=Nothing
End Sub
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 25, 2014, 15:17:38
Hallo & vielen Dank erstmal ;)

ich check das grad noch nicht - wie der Code dann auszusehen hat....

Schaltfläche mit Ereignis ist mir klar....
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 25, 2014, 15:36:38
ok, bin nun einen Schritt weiter....

beim Ausführen erhalte ich einen Kompilierungsfehler:

"Unzulässige Verwendung des Schlüsselworts ME"

..er bleibt bei der zeile Einstufung hängen
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: MaggieMay am September 25, 2014, 15:42:54
Zitat von: BranBern am September 25, 2014, 15:17:38Schaltfläche mit Ereignis ist mir klar....
Scheinbar doch nicht, denn dort gehörte der Code hin, ins Klick-Ereignis der Schaltfläche namens "btnEMail". Und zwar im Klassenmodul des zugehörigen Formulars.
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 25, 2014, 15:55:56

...aus meinen Antworten geht ja eh schon hervor, wie firm ich in dieser Sache bin.... darum liebe ich diese Arten von Antworten.....

Denke - Schritt für Schritt kurz erkären, würde den Prozess vereinfachen und ist nicht allzuviel Aufwand für dich?

Entschädigung in Form von Cafe kann ich gern anbieten ;)
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: DF6GL am September 25, 2014, 16:13:08
Hallo,

was genau möchtest Du erklärt haben?
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: MaggieMay am September 25, 2014, 16:15:22
Erstelle ein Formular mit einem Textfeld zur Vorgabe der gewünschten "Einstufung" und einem Button namens "btnEMail" zum Starten der Aktion. Dann gehst du in die Ereigniseigenschaften des Button, wählst beim Ereignis "Beim Klicken" "[Ereignisprozedur]" und gehst über die drei Punkte in den VBA-Editor. Dann bist du automatisch an der richtigen Stelle wo der Code hingehört.

In der Abfrage für die Ausgabe der Email-Adressen kannst du nun im Kriterium Bezug nehmen auf das Textfeld im Formular.

Ich hoffe, das hilft dir weiter. Andernfalls stell bitte konkrete Fragen.
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 25, 2014, 17:00:27
Die erstellte Abfrage filtert bereits nach ausgewähltem Kriterium.... "Abfrage Einstufung"

beim Betätien des Buttons: Sie haben als Einstellungder Ereigniseigenschaft den Ausdruck Beim Klicken eingegeben. Dieser Ausdruck hat einen Fehler verursacht: Konstanten, Zeichenfolgen fester Länge, benutzerdefinierte Datenfelder und Declae-Anweisungen sind als Public-Elemente von Objektmodulen nicht zugelassen


ich versteh bahnhof ....irgendwie/wo muss ich dem Code ja mitteilen, welche Abfrage er verwenden soll?
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: MaggieMay am September 25, 2014, 17:02:18
Dann zeig doch bitte deinen Code, damit wir eine gemeinsame Grundlage haben.
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 25, 2014, 17:14:03
...sofern ich die Möglichkeit habe, würde ich euch auch die DB online stellen..... (auf die Gefahr hin, ausgelacht zu werden)

habe den Code zum erstellen zum Button im Formular Einstufung erstellt...
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: MaggieMay am September 25, 2014, 17:22:41
Die Fehlermeldung spricht doch für sich, die Declare-Anweisung hat in einem Klassenmodul nichts zu suchen, verschiebe den Code in ein allgemeines Modul.

Wenn du die DB hochladen möchtest, dann bitte vorher komprimieren (-> Datenbanktools) und dann erst zippen.
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 25, 2014, 17:41:29
DB zu groß - (1.380) - darf ich sie dir per Mail senden?
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: MaggieMay am September 25, 2014, 17:57:33
Erstelle eine Test-DB mit ein paar wenigen Testdaten und nur mit dem was benötigt wird, um dein Problem nachzustellen. Das sollte dann wohl klein genug sein.

Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 25, 2014, 18:22:49
...hab die DB in meine Dropbox geladen...

https://www.dropbox.com/s/z0majtffwq1nj6l/Verwaltung.accdb?dl=0
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: MaggieMay am September 25, 2014, 19:57:16
Was hast du denn da hochgeladen, wo ist das Formular, wo ist der Code?
Zitat von: MaggieMay am September 25, 2014, 17:57:33
Erstelle eine Test-DB mit ein paar wenigen Testdaten und nur mit dem was benötigt wird, um dein Problem nachzustellen.
Das hast du wohl auch nicht gelesen, oder?
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 25, 2014, 19:59:41
...die version, wo ochs nicht hinbekommen hab, hab ich im Büro... Kann ich ab morgen online stellen....
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 26, 2014, 08:12:47
guten Morgen -

die Version mit Code:

https://www.dropbox.com/sh/nelx18dvs8ixkdt/AADL1ZXihqFNlbgy2IxnpZqpa?dl=0
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: MaggieMay am September 26, 2014, 10:25:59
Hallo,

ich hatte dir in meiner Antwort #9 am: September 25, 2014, 16:15:22 die Vorgehensweise genau beschrieben, der brauchst du nur zu folgen, dann landet der Code auch dort wo er hingehört. Im Formular "Stammdaten" gibt es doch gar keinen Button "btnEMail"! Auch das Modul mit den Deklarationen solltest du nicht "btnEMail" nennen - auch wenn das in diesem Fall nicht schadet.

Auch sollten Ereignisprozeduren stets auf dem von mir beschriebenen Weg über die Eigenschaften erzeugt und nicht manuell eingetragen werden, nur so ist sichergestellt, dass die Prozedurdeklaration korrekt ist  (manchmal gibt es Parameter).

Was die Abfrage betrifft, so sollte diese sich das Kriterium aus dem eigens dazu erstellten Formular holen, das sähe dann bspw. so aus:[Formulare]![Einstufung]![Einstufung]

Allerdings war es keine so gute Idee, das Formular "Einstufung" an die Tabelle "Einstufung" zu binden. Was du dort besser gebrauchen könntest wäre ein an die Tabelle "Einstufung" gebundenes Kombifeld zur Auswahl der für den Email-Versand gewünschten Einstufung. Der SQL-Code der Abfrage könnte dann so aussehen:SELECT Stammdaten.[Email 1], Stammdaten.[Email 2], Einstufung.Einstufung
FROM Einstufung INNER JOIN Stammdaten ON Einstufung.ID = Stammdaten.Einstufung
WHERE (((Einstufung.ID)=Eval("Forms!Einstufung!cboEinstufung")));


Versuche mal, das in diesem Sinne umzusetzen und melde dich, wenn du etwas nicht verstanden hast. Notfalls erstelle ich dir, wenn ich nachher mal Zeit habe, eine kleine Beispiel-DB.

Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 26, 2014, 10:32:45
vielen Dank für deine Hilfe - ich werd jetzt nochmal von Vorn beginnen mit der Einbindung - mal sehen wie weit ich komme ;) ;)
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 26, 2014, 11:08:03
...der Code scheint nun zum Teil zu funktionieren - er hängt nun bei der Übergabe an Live Mail??

set rs = CurrentDB.OpenRecordset.....

hab die Version in meiner Dropbox aktualisiert - kannst du mal drüber gucken?
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: MaggieMay am September 26, 2014, 11:21:26
Du musst das Kombifeld auch so nennen wie es in der Abfrage angesprochen wird.

Und wo ist jetzt der Button geblieben? Das Formular "Stammdaten" hat weiterhin nichts mit der Sache zu tun. Warum hast du den Button dort eingefügt?

Button und Code gehören ins Formular "Einstufung". Aber so wie ich es beschrieben hatte, aus dem Klickereignis heraus über die Einstellung "Ereignisprozedur" und die drei Punkte. Nur so erhältst du die korrekte Prozedurdeklaration.

Es ist ja nicht schlimm, dass du keine Ahnung von Access hast, aber dass ich alles doppelt und dreifach schreiben muss, finde ich etwas ärgerlich.
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 26, 2014, 11:37:45
hab ich gemacht (jetzt ;) - btnEMail bleibt bei set rs = Current... hängen....
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: MaggieMay am September 26, 2014, 11:43:28
Mir ist eben erst aufgefallen, dass die Abfrage "Abfrage Einstufung" ja gar nicht zum Einsatz kommt, sondern dass der SQL-Code per VBA erzeugt wird. Soweit OK, nur wie sieht er jetzt bei dir (im Formular "Einstufung"!) aus?
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 26, 2014, 11:47:19
du meinst den, der beim Button hinterlegt ist?

wie er mir in den ersten Antworten übermittelt wurde...

Sub btnEMail_Click()

Dim bcc as String, strSQL as String, rs as Dao.Recordset

strSQL = "Select [EMail 1] & ';' & [EMail 2] as Email from Stammdaten where  Einstufung = '" & Me!Einstufung & "'"

Set rs = Currentdb.Openrecordset (strSQL, dbOpenSnapshot)
Do Until rs.Eof
bcc= bcc & ";" & rs(0)
rs.MoveNext
Loop

ShellExecute 0, "Open", "mailto:" & "&bcc= " & bcc, "", "", 1

rs.Close:Set rs=Nothing
End Sub
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: MaggieMay am September 26, 2014, 13:21:10
Wie oft noch muss ich dir noch erklären, dass du Ereignisprozeduren nicht einfach freihändig eintippen sondern dir von Acccess anlegen lassen solltest?
Das sähe dann so aus:Private Sub btnEMail_Click()

End Sub


Als nächstes hast du im Formular "Einstufung" kein Steuerelement namens "Einstufung" sondern (hoffentlich) ein Kombifeld namens "cboEinstufung". Das Kombifeld ist zweispaltig und an die Tabelle "Einstufung" gebunden. Die erste Spalte ist die gebundene Spalte und wird mit Spaltenbreite 0 ausgeblendet. Du siehst also den Text, übergibst aber die ID.
Der SQL-Code sähe dann folgendermaßen aus:strSQL = "Select [EMail 1] & ';' & [EMail 2] as Email from Stammdaten where  Einstufung =" & Me!cboEinstufung

BTW:
Auf Nachschlagefelder in Tabellen sollte besser verzichtet werden, statt dessen setzt man Kombifelder in Formularen ein. Tabellen öffnet man eh nie direkt, sondern greift nur über Formulare darauf zu.
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 26, 2014, 13:55:28
der mir zuvor genannte SQL Befehlt hat nicht funktioniert - das Kombifeld hatte ich so angelegt wie du es mir geschrieben hattest!!

Fakt: die Übergabe klappt - fast ;)
Was muss ich noch streichen, damit er die adressen tatsächlich mit Komma-getrennten Werten ins Bcc feld schickt?
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: MaggieMay am September 26, 2014, 14:04:33
Bei meinem Test landeten die Mailadressen aber tasächlich im BCC-Feld, hast du daran etwas geändert?
Wenn du Kommas als Trennzeichen brauchst, so ersetze das Semikolon im Code durch ein Komma.
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 26, 2014, 14:08:51
den hab ich unverändert gelassen...

bcc = bcc & ";" & rs(0)
rs.MoveNext
Loop

ShellExecute 0, "Open", "mailto:" & "&bcc= " & bcc, "", "", 1

rs.Close: Set rs = Nothing
End Sub


zugegeben - getestet nur auf Lotus Notes - Win Live Mail mach ich jetzt noch
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 26, 2014, 14:32:18
Live Mail = selbes Problem....

man sieht - in Punkto Code bin ich eine Flasche.... was ich hiermit auch zugebe ;)
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: MaggieMay am September 26, 2014, 14:42:14
Wie sieht das denn aus bei dir, wird das Mail-Programm gestartet?
Ist das Bild das du gezeigt hast tatsächlich das unmittelbare Ergebnis von ShellExecute?
Es wäre hilfreich, wenn du präzise Angaben machen würdest, was genau nicht funktioniert, bspw. "BCC landet im To-Feld".

Warum willst du die Semikolons durch Kommas ersetzen?

Die folgenden Beispiele haben bei mir mit Outlook (OL) bzw. Thunderbird (TB) geklappt:    ' OL
    ShellExecute 0, "Open", "mailto:" & "[color=blue]&bcc[/color]= " & bcc & "&body=test" & "&subject=Test-Mail", "", "", 1
    ' TB
    ShellExecute 0, "Open", "mailto:" & "[color=red]?bcc[/color]= " & bcc & "&body=test" & "&subject=Test-Mail", "", "", 1
Vielleicht probierst du es auch mal mit "?" anstelle des "&" aus. (Aber nur vor den Schlüsselwörtern!)
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 26, 2014, 14:45:07
Das unmittelbare Ergebnis laut Bild!

Mail startet - neue Mail - im An steht der Text laut Bild...
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 26, 2014, 14:56:31
Das ? ist die Lösung ;) ;)

funkt - super

Wenn du jetzt in meiner Nähe zu Haus wärst - ich würd dich glatt zum Essen einladen

Vielen lieben Dank!
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: MaggieMay am September 26, 2014, 15:04:43
Woher nimmst du die Gewissheit, dass ich nicht vielleicht doch in deiner Nähe bin? ;)
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 26, 2014, 15:08:37
.de - Germany ...ich wohn im Nachbarland südöstlich.... ;)
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: MaggieMay am September 26, 2014, 15:17:15
Ja, das wäre in der Tat etwas weit... - aber sicherlich eine Reise wert! :)
Titel: Re: E-Mail Adressübergabe an Windows Live Mail
Beitrag von: BranBern am September 26, 2014, 15:22:09
Solltest mal nach Österreich kommen - das Angebot bleibt baw bestehen!! Hast mir riesig weiter geholfen