Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Katastrophenkommando am März 17, 2022, 14:38:08

Titel: Abfragewert in E-Mail-Body einfügen
Beitrag von: Katastrophenkommando am März 17, 2022, 14:38:08
Hallo zusammen,

ich habe eine ganz banale Aggregatabfrage in Access, die eine Anzahl aus einer weiteren Abfrage ausliest mit folgendem Code:

SELECT Count(Test_qry.Werk) AS AnzahlvonWerk
FROM AnzahlBNO_qry;

Weiterhin habe ich einen Code der eine E-Mail erstellt:

Dim objOutlook As Object
Dim objMail As Object

Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)

   With objMail

        .SentOnBehalfOfName = "Testuser@knirzundknispel.de"
        .To = "Geschaeftsfuehrung@lugundtrug.de"
        .Subject = "Auswertung Knirz und Knispel GmbH"
        .Body = "Sehr geehrte Damen und Herren," & vbCrLf & vbCrLf _
                & "in der Anlage erhalten Sie die Auswertung zur Knirz und Knispel GmbH." & _
                "Hier soll der aggregierte Wert aus der Abfrage rein" & vbCrLf & vbCrLf _
                & "Mit freundlichen Grüßen"
 
        .Display
                   
  End With

Soweit klappt alles, bis auf einen entscheidenden Punkt. Ich möchte, dass der aggregierte Wert aus der Abfrage an der beschriebenen Stelle im Code für die Mail eingefügt wird. Ich vermute, dass entweder die Abfrage selbst im entsprechenden Codeteil angesprochen oder der SQL-Ausdruck direkt in den Code des Mail-Bodys muss, aber ich habe keine Idee (man könnte auch sagen "Wissen" ;D ) wie genau. Vielleicht geht es ja sogar ohne Umweg über die Abfrage direkt aus der Tabelle?

Könnt Ihr mir helfen? Vielleicht gibt es ja auch irgendwo in den Tiefen des www eine Beschreibung, die zu finden ich nur nicht imstande war.

Beste Grüße
Alex
Titel: Re: Abfragewert in E-Mail-Body einfügen
Beitrag von: DF6GL am März 17, 2022, 14:44:08
Hallo,

sowas kannst Du mit der Dlookup-Funktion lösen:


.Body = "Sehr geehrte Damen und Herren," & vbCrLf & vbCrLf _
                & "in der Anlage erhalten Sie die Auswertung zur Knirz und Knispel GmbH." & _
                 Dlookup( "AnzahlVonWerk","BanaleAggregatAbfrage")  & vbCrLf & vbCrLf _
                & "Mit freundlichen Grüßen"
Titel: Re: Abfragewert in E-Mail-Body einfügen
Beitrag von: Katastrophenkommando am März 17, 2022, 15:59:29
Großartig, genau was ich gesucht habe.

Vielen Dank!
Titel: Re: Abfragewert in E-Mail-Body einfügen
Beitrag von: Katastrophenkommando am März 18, 2022, 14:44:37
Einen habe ich noch, wenn Du noch Lust hast ;D

Das funktioniert einwandfrei, allerdings kann es auch sein, dass die Abfrage Null zurückgibt. In dem Fall soll hier dann einfach eine "0" statt des Abfragewerts reingeschrieben werden:

Zitat.Body = "Sehr geehrte Damen und Herren," & vbCrLf & vbCrLf _
                & "in der Anlage erhalten Sie die Auswertung zur Knirz und Knispel GmbH." & _
                 Dlookup( "AnzahlVonWerk","BanaleAggregatAbfrage")  & vbCrLf & vbCrLf _
                & "Mit freundlichen Grüßen"

Ich habe das mit

ZitatIf Dlookup( "AnzahlVonWerk","BanaleAggregatAbfrage") Is Null Then

...

.Body = "Sehr geehrte Damen und Herren," & vbCrLf & vbCrLf _
                & "in der Anlage erhalten Sie die Auswertung zur Knirz und Knispel GmbH." & _
                 "0"  & vbCrLf & vbCrLf _
                & "Mit freundlichen Grüßen"
...

Else If ...
End If


versucht, aber das funzt nicht. Sicher ein Anfängerfehler ::)
Titel: Re: Abfragewert in E-Mail-Body einfügen
Beitrag von: Beaker s.a. am März 18, 2022, 14:51:04
Zitat.Body = "Sehr geehrte Damen und Herren," & vbCrLf & vbCrLf _
                & "in der Anlage erhalten Sie die Auswertung zur Knirz und Knispel GmbH." & _
                 Nz(Dlookup( "AnzahlVonWerk","BanaleAggregatAbfrage"), 0)  & vbCrLf & vbCrLf _
                & "Mit freundlichen Grüßen"
Titel: Re: Abfragewert in E-Mail-Body einfügen
Beitrag von: Katastrophenkommando am März 18, 2022, 19:20:49
Ich werde Euch alle in mein Abendgebet einschließen. Und ganz nebenbei endlich verstanden, was mit Nz noch alles geht.

Dankedankedanke