0

我想将查询中的所有记录写入电子邮件。

这将写入查询中的第一条记录。

MyBodyText = MailList("AccountName") & "   -   " & MailList("ExpirationDate")

我知道我需要某种循环。

MailList 定义如下

Set MailList = db.OpenRecordset("qryDateEmail")
Option Compare Database
Option Explicit

Public Function ExpirationDate()

Dim strSQL
Dim db As DAO.Database
Dim MailList As DAO.Recordset
Dim MyOutlook As Outlook.Application
Dim MyMail As Outlook.MailItem
Dim Subjectline As String
Dim BodyFile As String
Dim fso As FileSystemObject
Dim MyBody As TextStream
Dim MyBodyText As String
Dim MyDecision As String
Dim strReportName As String
Dim strEnroll As String
Dim strWho As String
Dim strEmail As String

Set fso = New FileSystemObject
Set MyOutlook = New Outlook.Application
Set db = CurrentDb()
Set MailList = db.OpenRecordset("qryDateEmail")

Subjectline$ = "Expiration Date" & " " & Date

Set MyMail = MyOutlook.CreateItem(olMailItem)

Do While Not MailList.EOF
    MyBodyText = MailList("AccountName") & "   -   " & MailList("ExpirationDate")
    MailList.MoveNext
Loop

MyMail.To = "" & ""
MyMail.CC = CurrentUser() & ""

MyMail.Subject = Subjectline$

MyMail.Body = MyBodyText
MyMail.Display

strEmail = Now()
strWho = CurrentUser()

Set MyMail = Nothing
Set MyOutlook = Nothing

End Function
4

1 回答 1

1

您可以遍历记录集,将每行中的这些值添加到正文中。

未经测试的空气代码:

With MailList
    Do While Not .EOF
        MyBodyText = MyBodyText & !AccountName & _
            "   -   " & !ExpirationDate & vbCrLf
        .MoveNext
    Loop
End With

现在我看到您在问题中添加了类似的代码。问题是代码MyBodyText通过循环覆盖了每次的值。追加到MyBodyText每次而不是替换文本...

MyBodyText = MyBodyText & "new text"

代替 ...

MyBodyText = "new text"
于 2012-12-21T17:44:55.473 回答