Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
?
Solved

MS SQL SP Result NULL skews HTML formatting

Posted on 2014-03-11
4
Medium Priority
?
481 Views
Last Modified: 2014-03-12
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
Comment
Question by:cjake2299
  • 2
4 Comments
 
LVL 66

Accepted Solution

by:
Jim Horn earned 1600 total points
ID: 39921596
Instead of [WHATEVER], use ISNULL([WHATEVER], '')
0
 
LVL 40

Assisted Solution

by:lcohan
lcohan earned 400 total points
ID: 39921860
-- 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
 

Author Closing Comment

by:cjake2299
ID: 39924187
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
 
LVL 66

Expert Comment

by:Jim Horn
ID: 39924353
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

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

An alternative to the "For XML" way of pivoting and concatenating result sets into strings, and an easy introduction to "common table expressions" (CTEs). Being someone who is always looking for alternatives to "work your data", I came across this …
Ready to get certified? Check out some courses that help you prepare for third-party exams.
Using examples as well as descriptions, and references to Books Online, show the documentation available for date manipulation functions and by using a select few of these functions, show how date based data can be manipulated with these functions.
Via a live example combined with referencing Books Online, show some of the information that can be extracted from the Catalog Views in SQL Server.
Suggested Courses

564 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question