3

テーブル「GetContact_TempTbl」からメールアドレスを取得し、そのメールアドレスにレポートを送信したいと思います。このメールは受信する会社によって変更されます。現在、関連するメールアドレスを取得して、一時テーブルに保存しています。 ObjectRequiredエラーが発生します。

アドバイスをよろしくお願いします。

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

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 に答える
0

レコードセットに電子メールを送信する受信者ごとに1つの行がある場合は、最初の行から受信者だけを読み取るのではなく、レコードセットを歩いて収集します。

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

ただし、私の解釈が正しくなく、レコードセットに常に1行だけの単一行が含まれているContact_Email場合は、レコードセットも必要ありません。Contact_Emailでを取得するだけですDLookup

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