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 Körper mit Wert aus Mehrfachauswahl Feld programmieren.

Begonnen von Carlos_C, Juli 03, 2015, 17:24:46

⏪ vorheriges - nächstes ⏩

Carlos_C

Hallo liebe Access Gurus

Ich habe heute ein Problem mit dem Mailkörper einer in einem Formular per VBA generierten Mail.

Also, in meiner Datenbank für die Verwaltung von Testberichten soll per Knopfdruck in einem Unterformular eine E-Mail erstellt werden. In dieser Mail sollen - außer des Testberichtes als pdf als Anhang – die Stammdaten des Berichtes im Mailbody geschickt werden, also: Berichtnummer, Version, Datum, Kommentare und Material. Diese 5 Kriterien kommen aus der entsprechenden Zeile des Unterformulars.

Mit den Kriterien Berichtnummer, Version, Datum und Kommentare ist es überhaupt kein Problem. Anbei der Code:


Private Sub Befehl171_Click()

Dim myOutlApp As Object
Dim myMail As Object
Dim IDBericht As Long
Dim BerichtNummer As Long
Dim Version As Long
Dim Dateiname As String
Dim Pfad As String
Dim DateiMitPfad As String
Dim Pruefer As String

IDBericht = Me![IDBericht]
BerichtNummer = Me![BerichtNr]
Version = Me![lngLetzteVersion]

'Dateiname mit Pfad für Attachment ermitteln
Dateiname = BerichtNummer & "-" & Format(Version, "00") & ".pdf"
Pfad = CurrentProject.Path & "\Dateien\Testberichte\Letzte Versionen\"
DateiMitPfad = Pfad & Dateiname


'Mail schreiben
Set myOutlApp = CreateObject("Outlook.Application")
Set myMail = myOutlApp.CreateItem(olMailItem)

With myMail
   
    .Subject = "Testbericht " & BerichtNummer & "-" & Format(Version, "00") & "."
   
    .HTMLBody = "<font face=arial><font size = 2>Guten Tag,<br><br>anbei folgender Testbericht:" & "<br><br>" & _
    "Daten des Berichts:<br><br>" & _
    "<b>Bericht Nummer: </b>" & BerichtNummer & "<br>" & _
    "<b>Version: </b>" & Format(Version, "00") & "<br>" & _
    "<b>Datum: </b>" & Format(Me![Datum], "dd.mm.yyyy") & "<br>" & _
    "<b>Kommentare: </b>" & Me!Kommentare & "<br>" & _
    "</font>"   
   
    .Attachments.Add DateiMitPfad
   
    .Display
       
End With

Set myMail = Nothing
Set myOutlApp = Nothing

End Sub


Aber mit dem Kriterium Material tue ich es mir schwer. Das Feld ,,lngMaterial" kommt ursprünglich aus einem Tabellenfeld mit Mehrfachauswahl. Wenn ich folgendes in den Code schreibe:

"<b>Material: </b>" & Me![lngMaterial] & "<br>" & _

meckert das System: ,,Laufzeitfehler '13': Typen unverträglich".

Um das Problem erstmal zu verstehen, habe ich versucht den Wert des Felds lngMaterial in einem Testfeld des Hauptformulars zu speichern. Dafür habe ich einen Knopf programmiert mit dem code ,,Forms!MeinHauptformular!MeinTestfeld = Me!lngMaterial." Nach Knopfdruck sieht man im Testfeld des Hauptformular einen Wert wie ,,1; 3; 5". Das heißt, vermute ich mal, dass im Feld die Materialen mit ID 1, 3 und 5 gespeichert sind.

Dann habe ich versucht, den Wert von ,,lngMaterial" in einer Stringvariable ,,strMaterial" zu speichern, also mit dem Code ,,strMaterial = Me!lngMaterial". Geht aber nicht. Ich dachte, wenn ich den Wert von lngMaterial in einer strVariable speichern kann, kann ich diesen String irgendwie zerlegen und die zerlegten Nummern in eine Tabelle speichern, und mittels Abfrage mit der Tabelle tblMaterialen die Namen der Materialen ,,besorgen". Aber irgendwie komme ich nicht weiter.

Hat jemand einen Rat, wie ich dieses Problem lösen kann? Ich möchte also im Mailbody auch die Namen der Materialen haben, z.B. ,,Material1, Material3, Material5".

Freue mich auf jeden Vorschlag!


Gruß,

Carlos

DF6GL

Hallo,

bemühe mal die Forensuche nach "Recordset2" ... damit Du siehst, wie man auf Mehrwertfelder und deren Inhalte zugreifen kann.

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Carlos_C

Geschafft!!!!


'strMaterial erzeugen
If Not IsNull(Me![lngMaterial]) Then

    'IDs von Material(en) in tbl tblStringMaterial eintragen
    With CurrentDb().OpenRecordset("tblStringMaterial", dbOpenDynaset, dbAppendOnly)
        For Each itm In Me![lngMaterial].Value
            .AddNew
            !lngMaterial = itm
            .Update
        Next
    End With

    'String "Material" erzeugen
    strMaterial = ""
    Set db = CurrentDb
    Set rs = db.OpenRecordset("qryStringMaterial", dbOpenSnapshot) 'qryStringMaterial ist eine Abfrage mit den Tabellen strMaterial und tblMaterialen, um die Namen der Materialen zu "besorgen"

    If Not rs.EOF Then
        rs.MoveFirst
        Do While Not rs.EOF
            strMaterial = strMaterial & rs! Material & " ; " 'Im Feld "Material" der Abfrage qryStringMaterial steht der Name des Materials
            rs.MoveNext
        Loop
        rs.Close
    End If

    Set rs = Nothing
    Set db = Nothing
   
Else

    strMaterial = ""

End If


Dann in den Code für das Mailbody schreibe ich:

"<b>Materialen: </b>" & strMaterial & "<br>" & _

Und voilá!!!!
Gruß,

Carlos