Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как добавить атрибуты при формировании почтовой рассылки в html формате  [new]
linav
Guest
ребята, подскажите, пожалуйста, а как можно в тег td (где данные таблицы) добавить атрибуты, например: <td align=right>
+
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 AdventureWorks2008R2.Production.WorkOrder as wo
              JOIN AdventureWorks2008R2.Production.Product AS p
              ON wo.ProductID = p.ProductID
              WHERE DueDate > '2006-04-30'
                AND DATEDIFF(dd, '2006-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='danw@Adventure-Works.com',
    @subject = 'Work Order List',
    @body = @tableHTML,
    @body_format = 'HTML' ;
3 дек 14, 09:01    [16941282]     Ответить | Цитировать Сообщить модератору
 Re: как добавить атрибуты при формировании почтовой рассылки в html формате  [new]
смотрю_тут
Member

Откуда:
Сообщений: 1368
linav,

добавьте в текст , что мешает?
примерно так
N'<th>Expected Revenue</th></tr>' +'<td align=right>'+
CAST ( ( SELECT td = wo.WorkOrderID, '',
td = p.ProductID, '',
td = p.Name, '',

просто сначало сделайте HTML шаблон, а потом уже данные туда вписываете.
3 дек 14, 10:53    [16941838]     Ответить | Цитировать Сообщить модератору
 Re: как добавить атрибуты при формировании почтовой рассылки в html формате  [new]
linav
Guest
смотрю_тут
linav,

добавьте в текст , что мешает?
примерно так
N'<th>Expected Revenue</th></tr>' +'<td align=right>'+
CAST ( ( SELECT td = wo.WorkOrderID, '',
td = p.ProductID, '',
td = p.Name, '',

просто сначало сделайте HTML шаблон, а потом уже данные туда вписываете.


так мне в каждом столбце значений нужно свое выравнивание (именно в значениях, а не в шапке таблицы), а по вашему совету, извините, но вообще фигня получится
т.е. потом, после формирования я конечно же могу исправить, точнее дополнить, но думала, что может быть можно сразу это сделать
думала использовать EXPLICIT, но пока вообще не разобралась, как его использовать для моего случая

т.е. из такого:
+
declare @tHTML nvarchar(max)
if object_id('tempdb..#mytbl') is not null drop table #mytbl
create table #mytbl (id int not null identity, x int)
insert into #mytbl(x) values
	(1),(2),(3),(4),(5)

set @tHTML =	N'<html><body><H1>MyReport</H1>' +
				N'<table border="1">' +
				N'<tr><th>id</th><th>x</th></tr>' + 
				cast((	select 
								td = t.id, '',
								td = t.x
							from  #mytbl t 
							for xml path('tr'), type 
					) as nvarchar(max) ) +
				N'</table></body></html>'; 
select @tHTML 


я получаю:
+
<html>
 <body>
  <H1>MyReport</H1>
  <table border="1">
   <tr>
    <th>id</th>
	<th>x</th>
   </tr>
   <tr>
    <td>1</td>
	<td>1</td>
   </tr>
   <tr>
    <td>2</td>
	<td>2</td>
   </tr>
   <tr>
    <td>3</td>
    <td>3</td>
   </tr>
   <tr>
    <td>4</td>
    <td>4</td>
   </tr>
   <tr>
    <td>5</td>
    <td>5</td>
  </tr>
  </table>
 </body>
</html>

а хочется так:
+
<html>
 <body>
  <H1>MyReport</H1>
  <table border="1">
   <tr>
    <th>id</th>
	<th>x</th>
   </tr>
   <tr>
    <td align=right>1</td>
	<td align=center>1</td>
   </tr>
   <tr>
    <td align=right>2</td>
	<td align=center>2</td>
   </tr>
   <tr>
    <td align=right>3</td>
    <td align=center>3</td>
   </tr>
   <tr>
    <td align=right>4</td>
    <td align=center>4</td>
   </tr>
   <tr>
    <td align=right>5</td>
    <td align=center>5</td>
  </tr>
  </table>
 </body>
</html>
3 дек 14, 12:11    [16942444]     Ответить | Цитировать Сообщить модератору
 Re: как добавить атрибуты при формировании почтовой рассылки в html формате  [new]
Glory
Member

Откуда:
Сообщений: 104751
linav
а хочется так:

FOR XML EXPLICIT поможет вам
3 дек 14, 12:31    [16942622]     Ответить | Цитировать Сообщить модератору
 Re: как добавить атрибуты при формировании почтовой рассылки в html формате  [new]
linav
Guest
Glory,

спасибо, Вам
а если Вас это очень глобально не затруднит, то покажите, пожалуйста, это на моем примере.
3 дек 14, 12:49    [16942786]     Ответить | Цитировать Сообщить модератору
 Re: как добавить атрибуты при формировании почтовой рассылки в html формате  [new]
Glory
Member

Откуда:
Сообщений: 104751
linav
а если Вас это очень глобально не затруднит, то покажите, пожалуйста, это на моем примере.

Могу скопировать пример из хелпа
SELECT 1    as Tag,
         NULL as Parent,
         E.BusinessEntityID as [Employee!1!EmpID],
         NULL       as [Name!2!FName!ELEMENT],
         NULL       as [Name!2!LName!ELEMENT]
  FROM   HumanResources.Employee AS E
  INNER JOIN Person.Person AS P
  ON  E.BusinessEntityID = P.BusinessEntityID
  UNION ALL
  SELECT 2 as Tag,
         1 as Parent,
         E.BusinessEntityID,
         FirstName, 
         LastName 
  FROM   HumanResources.Employee AS E
  INNER JOIN Person.Person AS P
  ON  E.BusinessEntityID = P.BusinessEntityID
  ORDER BY [Employee!1!EmpID],[Name!2!FName!ELEMENT]
  FOR XML EXPLICIT

This is the partial result.

<Employee EmpID="1">
<Name>
<FName>Ken</FName>
<LName>S&#225;nchez</LName>
</Name>
</Employee>
<Employee EmpID="2">
<Name>
<FName>Terri</FName>
<LName>Duffy</LName>
</Name>
</Employee>

...
3 дек 14, 12:54    [16942835]     Ответить | Цитировать Сообщить модератору
 Re: как добавить атрибуты при формировании почтовой рассылки в html формате  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
linav,

> а хочется так:

так можно:

declare @tHTML nvarchar(max)
if object_id('tempdb..#mytbl') is not null drop table #mytbl
create table #mytbl (id int not null identity, x int)
insert into #mytbl(x) values
	(1),(2),(3),(4),(5)

set @tHTML =	N'<html><body><H1>MyReport</H1>' +
				N'<table border="1">' +
				N'<tr><th>id</th><th>x</th></tr>' + 
				cast((	select 
                [td/@align] = 'right' 
								, td = t.id
                ,''
                ,[td/@align] = 'center'
                ,td = t.x
							from  #mytbl t 
							for xml path('tr'), type 
					) as nvarchar(max) ) +
				N'</table></body></html>'; 
select cast(@tHTML as xml)
3 дек 14, 13:11    [16943014]     Ответить | Цитировать Сообщить модератору
 Re: как добавить атрибуты при формировании почтовой рассылки в html формате  [new]
linav
Guest
daw,

СПАСИБО! :)
3 дек 14, 13:18    [16943108]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить