У предыдущих разработчиков был процесс, который отправил оповещения по электронной почте в виде таблицы html в электронном письме, это было сделано путем запуска хранимой процедуры и передачи соответствующих параметров. Это немного за пределами моих навыков в данный момент, но я пытаюсь получить ту же процедуру, чтобы отправить электронное письмо для опоздания. Он отлично подходит для форматирования и компоновки. запрос -
SET @xml = CAST(( SELECT td = '<td align = "Center">' + CONVERT(VARCHAR(12),EmployeeName) + '</td>'
, td = '<td align = "Center">' + CONVERT(VARCHAR(12),StartTime) + '</td>'
, td = '<td align = "Center">' + CONVERT(VARCHAR(12),Late) + '</td>'
FROM #tempLateEmail
FOR XML PATH('tr'),TYPE).value('.','NVARCHAR(MAX)'
) AS NVARCHAR(MAX))
Выход тела:
SET @body =
N'<style type="text/css">'
+ 'body {font-family: Arial;font-size:12px;} '
+ 'table{font-size:11px; border-collapse:collapse;table-layout: fixed} '
+ 'td{ border:1px solid black; padding:3px;} '
+ 'th{background-color:#F1F1F1;border:1px solid black; padding:3px;}'
+ 'h1{font-weight:bold; font-size:12pt}'
+ 'h2{font-weight:bold; font-size:10pt}'
+ '</style>'
+ '<body style="width:620px; margin:15px;">'
+ '<div style="margin:0 auto; width:300px">'
+ '<h1>Lateness Email on' + ' ' + convert(varchar, getdate(), 103) + '</h1>'
+ '</div>'
+ '<div style="float:left; width:250px">'
+ '<p>The following people appear to have been late today</p> '
+ '</div>'
+ '<div style="float:left; margin-left:20px; width:250px">'
+ '<div style="height:150px; overflow:auto">'
+ '<table width="250px">'
+ '<tr>'
+ '<th width = 100>Employee</th>'
+ '<th width =100>Expected Start Date</th>'
+ '<th width =100>Minutes Late</th>'
+ '</tr>'
+ @xml
+ '</table>'
+ '</div>'
+ '</div>'
+ '<div style="clear:both;"></div>'
+ '</body>'
SET @subject = 'Lateness Email for - ' + convert(varchar, getdate(), 103)
Затем он выводит их бок о бок, а не в таблицу. Я понимаю, почему он это делает, но я не могу понять, что с этим делать. Надеюсь, я предоставил достаточно информации
в соответствии с комментарием Рохита Тивари, действительно было <tr>
отсутствующее в конце верхнего сегмента кода -
SET @xml = CAST(( SELECT td = '<td align = "Center">' + CONVERT(VARCHAR(12),EmployeeName) + '</td>'
, td = '<td align = "Center">' + CONVERT(VARCHAR(12),StartTime) + '</td>'
, td = '<td align = "Center">' + CONVERT(VARCHAR(12),Late) + '</td>**<tr>** '
FROM #tempLateEmail
FOR XML PATH('tr'),TYPE).value('.','NVARCHAR(MAX)'
) AS NVARCHAR(MAX))
выделил обновление выше.