2017-02-23 5 views
1

MS Libraryのサイトでは、電子メールを作成してhtmlテーブルの結果を埋め込む方法を示しています。 https://msdn.microsoft.com/en-us/library/ms190307.aspxT-SQL; sp_send_dbmailを使用してhtml形式で表の前後に文を追加する方法

これは問題ありませんが、メールの本文表に最初と最後の言葉をどのように追加してください。 (それは確かに、明白でなければならない?)

初期のコードは以下のとおりである場合には、最適な出力は次のようになります -

Hi,(carriage return) 
Here is a list.(carriage return) 
The details are below:(carriage return) 

(then table goes here) 

(carriage return) 
Thank you for looking.(carriage return) 
Kind regards(carriage return) 
(carriage return) 
From us 

表のサンプルコード:

DECLARE @tableHTML NVARCHAR(MAX) ; 

SET @tableHTML = 
N'<H1>Work Order Report</H1>' + 
N'<table border="1">' + 
N'<tr><th>Work Order ID</th><th>Product ID</th>' + 
N'<th>Name</th><th>Order Qty</th><th>Due Date</th>' + 
N'<th>Expected Revenue</th></tr>' + 
CAST ((SELECT td = wo.WorkOrderID,  '', 
       td = p.ProductID, '', 
       td = p.Name, '', 
       td = wo.OrderQty, '', 
       td = wo.DueDate, '', 
       td = (p.ListPrice - p.StandardCost) * wo.OrderQty 
      FROM AdventureWorks.Production.WorkOrder as wo 
      JOIN AdventureWorks.Production.Product AS p 
      ON wo.ProductID = p.ProductID 
      WHERE DueDate > '2004-04-30' 
      AND DATEDIFF(dd, '2004-04-30', DueDate) < 2 
      ORDER BY DueDate ASC, 
        (p.ListPrice - p.StandardCost) * wo.OrderQty DESC 
      FOR XML PATH('tr'), TYPE 
) AS NVARCHAR(MAX)) + 
N'</table>' ; 

EXEC msdb.dbo.sp_send_dbmail @recipients='[email protected]', 
@subject = 'Work Order List', 
@body = @tableHTML, 
@body_format = 'HTML' ; 

答えて

0

これを使用します代わりに...

DECLARE @header NVARCHAR(MAX) 
DECLARE @footer NVARCHAR(MAX) 
DECLARE @tableHTML NVARCHAR(MAX) ; 

SET @header = 'Hi, </br> Here is a list. </br> The details are below </br>' 
SET @footer = '</br> Thank you for looking. </br> Kind regards </br> From us' 

SET @tableHTML = @header + 
N'<H1>Work Order Report</H1>' + 
N'<table border="1">' + 
N'<tr><th>Work Order ID</th><th>Product ID</th>' + 
N'<th>Name</th><th>Order Qty</th><th>Due Date</th>' + 
N'<th>Expected Revenue</th></tr>' + 
CAST ((SELECT td = wo.WorkOrderID,  '', 
       td = p.ProductID, '', 
       td = p.Name, '', 
       td = wo.OrderQty, '', 
       td = wo.DueDate, '', 
       td = (p.ListPrice - p.StandardCost) * wo.OrderQty 
      FROM AdventureWorks.Production.WorkOrder as wo 
      JOIN AdventureWorks.Production.Product AS p 
      ON wo.ProductID = p.ProductID 
      WHERE DueDate > '2004-04-30' 
      AND DATEDIFF(dd, '2004-04-30', DueDate) < 2 
      ORDER BY DueDate ASC, 
        (p.ListPrice - p.StandardCost) * wo.OrderQty DESC 
      FOR XML PATH('tr'), TYPE 
) AS NVARCHAR(MAX)) + 
N'</table>' + @footer 


    EXEC msdb.dbo.sp_send_dbmail @recipients='[email protected]', 
    @subject = 'Work Order List', 
    @body = @tableHTML, 
    @body_format = 'HTML' ; 

これは私の出力

0123です

enter image description here

+1

ありがとう@マンダソン。 body_formatはhtmlですが、キャリッジリターンは表示されません。私はここで他の答えを探して、彼らは同様の問題を指摘しています:( – Baz

+0

それはあなたの問題を解決した場合、問題はないと答えてマークしてください。 – manderson

+0

残念ながらそれはしませんでした。 – Baz

0

@manderson 私はこれを今働かせています。それは私が以前に見つけなかったhtmlエラーでした。多くのありがとう

関連する問題