0

以前の開発者の 1 人は、電子メールの 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)

次に、テーブルではなく並べて出力します。なぜそれをしているのかは理解していますが、どうすればいいのかわかりません。十分な情報を提供したことを願っています

4

1 に答える 1

0

Rohit Tiwariのコメントによると、実際に<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))

上記の更新を強調表示しました。

于 2013-10-09T14:15:42.433 に答える