2015-02-05 48 views
0

可能是一個愚蠢的問題。處理從SQL表生成的空HTML表

我正在生成一個基於更改SQL服務器中的表的HTML電子郵件。我遇到了一個問題,如果這些表中的任何一個都是空的,則整個電子郵件都會被髮送而沒有任何內容。

我已經附上了我用來填充電子郵件的HTML字段的查詢,我想最好的方法是添加一個案例,以便在表中插入'N/a'行目標表中沒有行,但是我不確定所需的代碼。

另外,任何有關如何編寫HTML來處理這些空表的知識將是有用的。

有什麼想法?

謝謝!

選擇代碼:此表

SELECT 
td = [Exercise],'', 
td = [Weight],'', 
td = [Set1],'', 
td = [Set2],'', 
td = [Set3],'', 
td = [Set4],'', 
td = [Set5],'' 

FROM [dbo].[Isolation_531] 

全碼:

SET @tableHTML3 = 
N'<style type="text/css"> 
#box-table 
{ 
font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; 
font-size: 12px; 
text-align: center; 
border-collapse: collapse; 
border-top: 7px solid #9baff1; 
border-bottom: 7px solid #9baff1; 
} 
#box-table th 
{ 
font-size: 13px; 
font-weight: normal; 
background: #b9c9fe; 
border-right: 2px solid #9baff1; 
border-left: 2px solid #9baff1; 
border-bottom: 2px solid #9baff1; 
color: #039; 
} 
#box-table td 
{ 
border-right: 1px solid #aabcfe; 
border-left: 1px solid #aabcfe; 
border-bottom: 1px solid #aabcfe; 
color: #669; 
} 
tr:nth-child(odd) { background-color:#eee; } 
tr:nth-child(even) { background-color:#fff; } 
</style>'+ 
N'<H3><font color="Navy">Isolation Work</H3>' + 
N'<H4><font color="Navy">This is isolation work based on last week. Feel free to change but try and focus on exercises appropriate to the workout day.</H4>' + 
N'<table id="box-table" >' + 
N'<tr><font color="Green"><th>Name</th> 
<th>Weight</th> 
<th>Set One</th> 
<th>Set Two</th> 
<th>Set Three</th> 
<th>Set Four</th> 
<th>Set Five</th> 
</tr>' + 

CAST (( 

SELECT 
td = [Exercise],'', 
td = [Weight],'', 
td = [Set1],'', 
td = [Set2],'', 
td = [Set3],'', 
td = [Set4],'', 
td = [Set5],'' 

FROM [dbo].[Isolation_531] 

FOR XML PATH('tr'), TYPE 
) AS NVARCHAR(MAX)) + 
N'</table>' 

回答

0

這是因爲當你試圖將一個空值連接到它自己的@ tableHTML3字符串由空。有一個feature來避免這種情況,但將來會被棄用。最好圍繞它編碼。

使用ISNULL

... 
CAST (ISNULL('<tr><td colspan="7">NO DATA</td></tr>',( 

SELECT 
td = [Exercise],'', 
td = [Weight],'', 
td = [Set1],'', 
td = [Set2],'', 
td = [Set3],'', 
td = [Set4],'', 
td = [Set5],'' 

FROM [dbo].[Isolation_531] 

FOR XML PATH('tr'), TYPE 
)) AS NVARCHAR(MAX)) 
... 

我的HTML是有點生疏,但我認爲這是正確的。隨時更新。

+0

嗨羅恩,感謝您的評論。這很有幫助,但是我不太確定在哪裏放置isnull,替換了cast((導致從數據類型xml到varchar的隱式轉換是不允許的,使用CONVERT函數來運行這個查詢。 – Adam 2015-02-05 17:13:55