troubleshooting Question

Break up Record set

Avatar of Tom Crowfoot
Tom CrowfootFlag for United Kingdom of Great Britain and Northern Ireland asked on
Microsoft AccessSQL
4 Comments1 Solution291 ViewsLast Modified:
Dear Experts,

My company produces a weekly newsletter and have an MS Access 2010 database which sends out the newsletter (it's an attachment) one at a time.  This works, however it sits on a network and takes a bit of time to run & every so often the connection to the network momentarily stops and then the sending fails as it can't pick up the attachment.

What I would like to do therefore is to group the recordset into blocks of 50 and BCC the recipients instead.  Does anybody have a piece of code which will take the first 50 recipients from the query "AllMembersLive" (the field name for the email address is "Email"), and save the email in outlook drafts.  It would then go back and repeat that for the next 50 etc etc.  

The membership list does change so I am keen not to have a "static" peice of code, by which I mean I would need to hard code in the "next 50" a set number of times.

Can anybody help
Private Sub Command2_Click()


    If Len(Me!txtFileName & "") = 0 Then
       MsgBox "The AM Update has not been attached!!", , "Warning"
        Cancel = True
        Exit Sub
        

End If

Me.WaitMessage.Visible = True

Dim rst As Recordset
    
    Set rst = CurrentDb.OpenRecordset("AllMembersLive")
    Do While Not rst.EOF

DoCmd.Save

Dim SEmailBody1 As String
Dim SEmailBody2 As String
Dim SEmailBody3 As String
Dim SEmailBody4 As String
Dim SEmailBody5 As String

SEmailBody1 =  "Email text - removed for privacy"

SEmailBody2 = "Email text - removed for privacy"

SEmailBody3 =  "Email text - removed for privacy"



        Dim mess_body As String
        Dim appOutLook As Outlook.Application
        Dim MailOutLook As Outlook.MailItem
        Set appOutLook = CreateObject("Outlook.Application")
        Set MailOutLook = appOutLook.CreateItem(olMailItem)
            
            Set appOutLook = CreateObject("Outlook.Application")
            Set MailOutLook = appOutLook.CreateItem(olMailItem)
            With MailOutLook
            .BodyFormat = olFormatRichText
            .To = rst!Email
            .Subject = "Correlate Search - Weekly Update, " & Date
            .HTMLBody = SEmailBody1 & SEmailBody2 & SEmailBody3
            
            If Left(Me.txtFileName, 1) <> "<" Then
                .Attachments.Add (Me.txtFileName)
            End If
            .DeleteAfterSubmit = True   'This would let Outlook send the note without storing it in your sent bin
            .Send
            End With
            'MsgBox MailOutLook.Body
            'Exit Sub
       
       rst.MoveNext
    
    Loop
    rst.Close
    Set rst = Nothing
    MsgBox "The AM Update has been sent!!", , "Success"
    Me.WaitMessage.Visible = False

EH:
      If Err.Number = 2501 Then
          Err.Clear
          Resume Next

     End If
End Sub
ASKER CERTIFIED SOLUTION
peter57r

Our community of experts have been thoroughly vetted for their expertise and industry experience.

Join our community to see this answer!
Unlock 1 Answer and 4 Comments.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 4 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros