3

我想从我的表“GetContact_TempTbl”中获取电子邮件地址并将报告发送到该电子邮件地址。此电子邮件将根据收到的公司而更改。我目前提取相关的电子邮件地址并将其存储在临时表中。我目前得到 Object Required 错误。

非常感谢您的建议。

Dim db As Database
Dim rs As Recordset
Dim stRecipients As String
Dim stDocName As String

Set db = CurrentDb()
Set rs = db.OpenRecordset("GetContact_TempTbl")
Set stRecipients = rs.Fields("Contact_Email")
stDocName = "License CODs"
stRecipietns = stRecipients

DoCmd.SendObject acReport, stDocName, acFormatPDF, stRecipients, , , "Thank You for your purchase"
4

2 回答 2

0

如果您的记录集为您要发送电子邮件的每个收件人保留一行,请遍历记录集以收集它们,而不是仅读取第一行中的收件人。

Const stDocName As String = "License CODs"
Dim db As DAO.database
Dim rs As DAO.Recordset
Dim stRecipients As String

Set db = CurrentDb()
Set rs = db.OpenRecordset("GetContact_TempTbl")
With rs
    Do While Not .EOF
        stRecipients = stRecipients & ";" & !Contact_Email
        .MoveNext
    Loop
    .Close
End With

If Len(stRecipients) > 0 Then
    ' discard leading ";"
    stRecipients = Mid(stRecipients, 2)
    DoCmd.SendObject acReport, stDocName, acFormatPDF, _
        stRecipients, , , "Thank You for your purchase"
Else
    MsgBox "No recipients to email!"
End If

Set rs = Nothing
Set db = Nothing

但是,如果我的解释不正确,并且记录集总是包含只有一行的单行Contact_Email,那么您甚至不需要记录集。您可以简单地检索Contact_Emailwith DLookup

stRecipients = Nz(DLookup("Contact_Email", "GetContact_TempTbl"), "")
于 2013-01-23T00:14:49.913 回答
0

你应该只使用set一个对象,而不是一个字符串:

Dim db As Database
Dim rs As Recordset
Dim stRecipients As String
Dim stDocName As String

Set db = CurrentDb()
Set rs = db.OpenRecordset("GetContact_TempTbl")
''This is not a field object, it is a string
stRecipients = rs.Fields("Contact_Email")
stDocName = "License CODs"
stRecipietns = stRecipients

DoCmd.SendObject acReport, stDocName, acFormatPDF, _
   stRecipients, , , "Thank You for your purchase"

如果您说明如何创建临时表,则可能会使这更容易。

于 2013-01-22T23:42:13.547 回答