Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

E-Mail Adressübergabe an Windows Live Mail

Begonnen von BranBern, September 25, 2014, 12:44:30

⏪ vorheriges - nächstes ⏩

MaggieMay

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.

Freundliche Grüße
MaggieMay


MaggieMay

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?
Freundliche Grüße
MaggieMay

BranBern

...die version, wo ochs nicht hinbekommen hab, hab ich im Büro... Kann ich ab morgen online stellen....


MaggieMay

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.

Freundliche Grüße
MaggieMay

BranBern

vielen Dank für deine Hilfe - ich werd jetzt nochmal von Vorn beginnen mit der Einbindung - mal sehen wie weit ich komme ;) ;)

BranBern

...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?

MaggieMay

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.
Freundliche Grüße
MaggieMay

BranBern

hab ich gemacht (jetzt ;) - btnEMail bleibt bei set rs = Current... hängen....

MaggieMay

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?
Freundliche Grüße
MaggieMay

BranBern

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

MaggieMay

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.
Freundliche Grüße
MaggieMay

BranBern

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?

MaggieMay

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.
Freundliche Grüße
MaggieMay