Hello,
So far with the very kind help of people of this forum website, I have pieced together the below code and it is working
I am new to VBA and although dabbled in the past never got this involved.
Essentially the code below takes information for a specific lead/customer from three separate tables. Of the three, two pull lead details and notes and transfers this information to the body of an Outlook template stored under the current project folder. The third pulls the file names stored in ContactProofT table for the same lead and attaches the proofs to the same email. This folder is also under the current project.
So the next step I would like to look at is the handling of null values for details, notes and attachments. For example if the end user speaks to the lead on the second call attempt and identifies that the client does not wish to be helped then this lead will never get to the third call attempt and so therefore the value of this field would be null. The same for the attachments, there wont always be proofs of contact to attach to an email.
Could all you forum'ers, that know what you are doing, unlike me, have a look at the code and see how we/I can accomplish this please?
Many thanks in advance
So far with the very kind help of people of this forum website, I have pieced together the below code and it is working
I am new to VBA and although dabbled in the past never got this involved.
Essentially the code below takes information for a specific lead/customer from three separate tables. Of the three, two pull lead details and notes and transfers this information to the body of an Outlook template stored under the current project folder. The third pulls the file names stored in ContactProofT table for the same lead and attaches the proofs to the same email. This folder is also under the current project.
So the next step I would like to look at is the handling of null values for details, notes and attachments. For example if the end user speaks to the lead on the second call attempt and identifies that the client does not wish to be helped then this lead will never get to the third call attempt and so therefore the value of this field would be null. The same for the attachments, there wont always be proofs of contact to attach to an email.
Could all you forum'ers, that know what you are doing, unlike me, have a look at the code and see how we/I can accomplish this please?
Many thanks in advance
Code:
Private Sub ClientStatus_Change()
Dim sStatus As String
sStatus = Me!ClientStatus & ""
If sStatus <> "NPW - No Contact" And sStatus <> "NPW - Gone Elsewhere" And sStatus <> "NPW - Unable to Place" Then
Exit Sub
End If
If MsgBox("Would you like to send a refund request for this lead?", vbQuestion + vbYesNo + vbDefaultButton1, "Request refund?") = vbNo Then
Exit Sub
End If
Me.Refresh
Dim appOutlook As Outlook.Application
Dim MailOutlook As Outlook.MailItem
Dim strSQL As String
Dim clientRST As Variant
Dim salesRST As Variant
Dim strTable As String
Dim i As Variant
Dim strPaths() As String
strSQL = "SELECT [CustomerID], [Broker], [Lead_Date], [Client_FN], [Client_SN], [Email_Address], [Mobile_No], [Email_Sent], [SMS/WhatsApp_Sent], [Phone_Call_#1], [Phone_Call_#2], [Phone_Call_#3] FROM Client" _
& " WHERE CustomerID = " & Forms!CopyExistingLeadF!CustomerID
Set clientRST = CurrentDb.OpenRecordset(strSQL)
Do While Not clientRST.EOF
Set appOutlook = CreateObject("Outlook.application")
Set MailOutlook = appOutlook.CreateItemFromTemplate(Application.CurrentProject.Path & "\RefundRequest.oft")
strSQL = "SELECT NoteDate, Note" _
& " FROM NoteHistory" _
& " WHERE CustomerID = " & clientRST!CustomerID
Set salesRST = CurrentDb.OpenRecordset(strSQL)
' TABLE COLUMNS
strTable = "<table><th>"
For i = 0 To salesRST.Fields.Count - 1
strTable = strTable & "<td>" & "</td>"
Next i
strTable = strTable & "</th>"
' TABLE ROWS
salesRST.MoveFirst
While Not salesRST.EOF
strTable = strTable & "<tr>"
For i = 1 To salesRST.Fields.Count
strTable = strTable & "<td>" & salesRST.Fields(i - 1).Value & "</td>"
Next i
strTable = strTable & "</tr>"
salesRST.MoveNext
Wend
strTable = strTable & "</table>"
salesRST.Close
strSQL = "SELECT [FileName] FROM ContactProofT" _
& " WHERE CustomerID = " & Forms!CopyExistingLeadF!CustomerID
strPaths = Split(SimpleCSV(strSQL), ",")
With MailOutlook
.To = "test@test.com"
.subject = "Refund Request"
Dim x As Long
For x = 0 To UBound(strPaths)
.Attachments.Add CurrentProject.Path & "\ContactProofs\" & strPaths(x)
Next
' REPLACE PLACEHOLDERS
.HTMLBody = Replace(.HTMLBody, "%date%", clientRST![Lead_Date])
.HTMLBody = Replace(.HTMLBody, "%first%", clientRST![Client_FN])
.HTMLBody = Replace(.HTMLBody, "%surname%", clientRST![Client_SN])
.HTMLBody = Replace(.HTMLBody, "%mobile%", clientRST![Mobile_No])
.HTMLBody = Replace(.HTMLBody, "%email%", clientRST![Email_Address])
.HTMLBody = Replace(.HTMLBody, "%Call1%", clientRST![Phone_Call_#1])
.HTMLBody = Replace(.HTMLBody, "%Call2%", clientRST![Phone_Call_#2])
.HTMLBody = Replace(.HTMLBody, "%Call3%", clientRST![Phone_Call_#3])
.HTMLBody = Replace(.HTMLBody, "%unsuccessful%", clientRST!Email_Sent)
.HTMLBody = Replace(.HTMLBody, "%message%", clientRST![SMS/WhatsApp_Sent])
.HTMLBody = Replace(.HTMLBody, "%Broker%", clientRST![Broker])
' ADD SALES TABLE
.HTMLBody = Replace(.HTMLBody, "%Notes%", strTable)
.Display
End With
Set MailOutlook = Nothing
clientRST.MoveNext
Loop
clientRST.Close
Set clientRST = Nothing
DoCmd.Close acForm, "CopyExistingLeadF"
End Sub