Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 SQL Server 2000 Forums
 SQL Server Development (2000)
 Email space not long enough?

Author  Topic 

brendalisalowe
Constraint Violating Yak Guru

269 Posts

Posted - 2005-01-14 : 16:39:26
I am trying to have an email sent for all the cases that are not between two dates. It is working, except that it doesn't put all the cases in the email. Are there are only a certain amount of chars allowed in an email? Or why would it just cut off the email? Please let me know. Thanks! Here is my code:


declare @counter int, @currentdate datetime
declare @cases nvarchar(10), @MyMessage nvarchar(1000), @CRLF char(2)
declare @month int, @year int, @date datetime, @rows int

set @month = datepart(month,getdate() - 1)
set @year = datepart(year,getdate() - 1)
set @currentdate = '2/1/2005'
set @date = convert(varchar, @year) + right('0' + convert(varchar, @month), 2) + '01'

set @rows = (select count(casenumber) from tblCapRec
where updated NOT BETWEEN
dateadd( d, -1 , dateadd( m , 1 , @date ) ) - (datediff(d, @date, dateadd(m, 1, @date)) -1)-- first day of month
AND dateadd( d, -1 , dateadd( m , 1 , @date )))
set @counter = 0
set @cases = (select top 1 casenumber from tblCapRec
where updated NOT BETWEEN
dateadd( d, -1 , dateadd( m , 1 , @date ) ) - (datediff(d, @date, dateadd(m, 1, @date)) -1)-- first day of month
AND dateadd( d, -1 , dateadd( m , 1 , @date ))--last day of month
order by casenumber)

set @MyMessage = @cases
set @CRLF = char(10) + char(13)

WHILE @counter < @rows - 2
BEGIN

set @cases = (select top 1 casenumber from tblCapRec
where (CaseNumber > @cases) AND (updated NOT BETWEEN
dateadd( d, -1 , dateadd( m , 1 , @date ) ) - (datediff(d, @date, dateadd(m, 1, @date)) -1)-- first day of month
AND dateadd( d, -1 , dateadd( m , 1 , @date )))--last day of month
order by casenumber)
set @MyMessage = @MyMessage + @CRLF + @cases
set @counter = @counter + 1

END

if (select count(casenumber) from tblCapRec
where updated NOT BETWEEN @currentdate - 1 AND dateadd( d, -1 , dateadd( m , 1 , @date )) ) = 0
set @MyMessage = 'All Cases Were Worked On This Month.'
else
set @MyMessage = 'Here Are The Cases That Were NOT Worked On Last Month:'
+ @CRLF + @CRLF + @MyMessage


exec master..xp_sendmail
@recipients = 'brenda@capitaltracer.com',
@subject = 'Cases NOT Worked On Last Month',
@message = @MyMessage


Brenda

If it weren't for you guys, where would I be?

ehorn
Master Smack Fu Yak Hacker

1632 Posts

Posted - 2005-01-14 : 16:42:42
Have you tried increasing the size of @MyMessage ?
Go to Top of Page

brendalisalowe
Constraint Violating Yak Guru

269 Posts

Posted - 2005-01-14 : 16:49:06
I changed it to:

@MyMessage varchar(8000)

It still doesn't print all the cases. A CaseNumber looks like this: 011-798765

Any other ideas? I read that @message can't be bigger than 8000. Is there a way to get around that?

Brenda

If it weren't for you guys, where would I be?
Go to Top of Page

ehorn
Master Smack Fu Yak Hacker

1632 Posts

Posted - 2005-01-14 : 16:51:33
Another option, rather than concatenating a variable, is to insert the values into a temp table and use the table as your message.
Go to Top of Page

brendalisalowe
Constraint Violating Yak Guru

269 Posts

Posted - 2005-01-14 : 17:06:53
How do you email a table?

Brenda

If it weren't for you guys, where would I be?
Go to Top of Page

brendalisalowe
Constraint Violating Yak Guru

269 Posts

Posted - 2005-01-14 : 17:25:52
Nevermind, I figured it out. Something like this:

exec master..xp_sendmail
@recipients = 'brenda@capitaltracer.com',
@subject = 'Cases NOT Worked On Last Month',
@query = "Select CaseNumber from crdatabase.dbo.tblCapRec"

Brenda

If it weren't for you guys, where would I be?
Go to Top of Page
   

- Advertisement -