хранимая процедура отправки электронной почты с проблемой форматирования html-таблицы

0

У предыдущих разработчиков был процесс, который отправил оповещения по электронной почте в виде таблицы 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)

Затем он выводит их бок о бок, а не в таблицу. Я понимаю, почему он это делает, но я не могу понять, что с этим делать. Надеюсь, я предоставил достаточно информации

  • 0
    поместите свой + @xml в <tr>
Теги:
stored-procedures
sql-server-2008

1 ответ

0

в соответствии с комментарием Рохита Тивари, действительно было <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))

выделил обновление выше.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню