Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 489
  • Last Modified:

MS SQL SP Result NULL skews HTML formatting

Good morning experts!

I have a stored procedure that runs every night on my MS SQL 2005 Database.  It takes and emails the results of the query in HTML Format, but if any part of the row is NULL then even the <TD></TD> are not created...which "skews" the whole table.  It's not common, but at least one day a week a report will have at least one row that is "skewed".

I'm fine with the report sending an empty email if there was nothing done that day, but if a cell is NULL I still need the <TD></TD> elements.  I tried adding ' ' to each column results...that failed because it can't add a blank space to (nothing).

SET @tableHTML =
    N'<H1>SLX report for activities on ' + @Today + '</H1>' +
    N'<table border="1">' +
    N'<tr><th>Account</th><th>Contact Name</th><th>Opportunity Name</th>' +
    N'<th>Description</th><th>Activity Type</th><th>Notes</th><th>Username</th>' + '</tr>' +
    CAST ( ( SELECT td = ' ' + [ACCOUNTNAME],       '',
                    td = ' ' + [CONTACTNAME], '',
                    td = ' ' + [OPPORTUNITYNAME], '',
                    td = ' ' + [DESCRIPTION],	'',
                    td = ' ' + [CATEGORY],	'',
                    td = ' ' + [NOTES],	'',
                    td = ' ' + [USERNAME]
		from sysdba.History
		where CAST(CREATEDATE as Date) = convert(NVARCHAR,GetDate(), 112)
              FOR XML PATH('tr'), TYPE 
    ) AS NVARCHAR(MAX) ) +
	N'</table>' ;

Open in new window


Essentially, I need to ensure that every row contains the same number of columns regardless if a value is present or not.  Any Thoughts?
0
cjake2299
Asked:
cjake2299
  • 2
2 Solutions
 
Jim HornMicrosoft SQL Server Developer, Architect, and AuthorCommented:
Instead of [WHATEVER], use ISNULL([WHATEVER], '')
0
 
lcohanDatabase AnalystCommented:
-- essentially like Jim Horn mentioned above:

SET @tableHTML =
    N'<H1>SLX report for activities on ' + @Today + '</H1>' +
    N'<table border="1">' +
    N'<tr><th>Account</th><th>Contact Name</th><th>Opportunity Name</th>' +
    N'<th>Description</th><th>Activity Type</th><th>Notes</th><th>Username</th>' + '</tr>' +
    CAST ( ( SELECT td = ' ' + isnull([ACCOUNTNAME],''),       '',
                    td = ' ' + isnull([CONTACTNAME],''), '',
                    td = ' ' + isnull([OPPORTUNITYNAME],''), '',
                    td = ' ' + isnull([DESCRIPTION],''),      '',
                    td = ' ' + isnull([CATEGORY],''),      '',
                    td = ' ' + isnull([NOTES],''),      '',
                    td = ' ' + isnull([USERNAME],'')
            from sysdba.History
            where CAST(CREATEDATE as Date) = convert(NVARCHAR,GetDate(), 112)
              FOR XML PATH('tr'), TYPE
    ) AS NVARCHAR(MAX) ) +
      N'</table>' ;
0
 
cjake2299Author Commented:
You ever have those days where you get so deep into a project that you forget some of the simple things?  Thanks gents, I appreciate the help!
0
 
Jim HornMicrosoft SQL Server Developer, Architect, and AuthorCommented:
Better you ask us and fork over these virtual things called 'points', then ask your buddies what might be a stupid question.

Thanks for the split.  Good luck with your project.  -Jim
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

A proven path to a career in data science

At Springboard, we know how to get you a job in data science. With Springboard’s Data Science Career Track, you’ll master data science  with a curriculum built by industry experts. You’ll work on real projects, and get 1-on-1 mentorship from a data scientist.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now