Hewson, Jim
JHewson at nciinc.com
Mon Feb 16 13:34:16 CST 2009
I created a stored procedure that formats an email to a select set of
people daily.
In the body of the email is an HTML table that lists project Milestones
that are due, either in the near future or are delinquent.
Now they want to send an email notification to the same group when a
Milestone has changed or if the basic project data has changed.
This can be easily done by sending out two emails (one for Milestones
due and another if it changes) to each person.
Is it possible to create two or three tables in the body of an email
using separate views?
I have yet to succeed in doing this.
The following code works - but the email is blank!
I am very inexperienced with this sort of thing, any help would be
greatly appreciated.
Thanks,
Jim
Declare
@tableHTML NVARCHAR(MAX),
@MaxRows int,
@RowCnt int,
@PMname varchar(100),
@PMEmail varchar(100);
SET @RowCnt = 1
CREATE TABLE #whileTable
(RowNum int IDENTITY(1,1) Primary Key,
E_Name varchar(50),
E_email varchar(50))
Insert into #whileTable
(E_Name, E_email)
Select E_Name, E_email
>From NCI_Milestones.dbo.vwEmailPM
Select @MaxRows = Count(*) from #whileTable
WHILE EXISTS (Select * from #whileTable as vw
where (
RowNum <= @MaxRows
and RowNum =
@RowCnt))
BEGIN
SET @PMName = (select E_Name from #whileTable where RowNum = @RowCnt)
SET @PMEmail = (select E_Email from #whileTable where RowNum = @RowCnt)
SET @tableHTML =
N'<H4>Milestones Due</H4>' +
N'<H5>This email is to notify you that you have a Milestone due
shortly or due now on your project. Please work with your A/R Analyst
to generate the necessary invoice. Once completed, please update the
Milestone Database (located at
https://one.nciinc.com/BusinessOperations/PM_Central/MilestoneDatabase/d
efault.aspx) to check off the "Amount Received" field. However, if the
milestone due date has slipped, please update the Milestone Database
with the number of days slipped as well as an explanation for the slip.
You will continue to receive these notices until one of these 2 actions
has been taken.</H5>' +
N'<table border="1">' +
N'<tr><th>Project Name</th><th>ID#</th><th>Milestone</th>' +
N'<th>Days Over Due</th>' +
N'<th>Due Date</th></tr>' +
CAST ( ( SELECT td = vw.ProjectName,'',
td =
MilestoneID,'',
td = Milestone,'',
td = OverDue,'',
td = DueDate,''
FROM vwProjectsDuePM as vw
WHERE PM_Name = @PMname for XML
PATH('tr'), TYPE)
as NVARCHAR(Max))+ N'</table>' +
N'<H4>Modified Projects</H4>' +
N'<H5>A change was made to the project data for
the following items.</H5>' +
N'<table border="1">' +
N'<tr><th>Project Name</th><th>Project
Number</th>' +
N'<th>GM Name</th>' +
N'<th>Business Manager</th></tr>' +
CAST ( ( SELECT td = vw1.ProjectName,' ',
td = ProjectNumber,' ',
td = GM_Name,' ',
td = BM_Name,' '
FROM
vwProjectsModified as vw1
WHERE PM_Name = @PMName
for XML PATH('tr'), TYPE)
as NVARCHAR(Max))+ N'</table>' +
N'<H4>Modified Milestones</H4>' +
N'<H5>A change was made to the milestone data
for the following items.</H5>' +
N'<table border="1">' +
N'<tr><th>Project Name</th>' +
N'<th>Project Number</th>' +
N'<th>Milestone</th>' +
N'<th>PM Name</th>' +
N'<th>Business Manager</th></tr>' +
CAST ( ( SELECT td = vw2.ProjectName,' ',
td = ProjectNumber,' ',
td = Milestone,' ' ,
td = PM_Name,' ',
td = BM_Name,' '
FROM
vwMilestonesModified as vw2
WHERE PM_Name = @PMName
for XML PATH('tr'), TYPE)
as NVARCHAR(Max))+ N'</table>' ;
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Milestone Email',
@recipients = 'jhewson at nciinc.com,
-- at PMEmail,
@subject = 'Milestone Database Notification',
@body = @tableHTML,
@body_format = 'HTML';
Select @RowCnt = @RowCnt +1
END
DROP TABLE #whileTable
################################################################################
If you have received this message in error, please contact the sender
immediately and be aware that the use, copying, or dissemination of
this information is prohibited. This email transmission contains
information from NCI Information Systems, Inc. that may be considered
privileged or confidential and is intended solely for the named
recipient.
################################################################################