конкатенированная ссылка dbMail анализирует амперсанд как слово и - PullRequest
0 голосов
/ 10 октября 2018

Я использую dbmail для сбора данных и отправки электронной почты.Как часть этого письма, у меня есть URL-адрес, окружающий текст для кликабельной ссылки на отчет SSRS с параметрами.Если у меня есть только один параметр, я в порядке.Но, если я добавлю параметры, URL передается с заменой амперсанда на «и».Я пробовал текст &, char (38) и текст% 26, и он анализирует его, преобразовав его в слово "и".

Например, если URL-адрес сопоставляется с использованием

declare @MySQL as varchar(max)='<table><tr><td>
<a href=' + char(39) + 'https://blah/Reports_SSRS/report/subfolder1/Subfolder%20Stuff/report%20Name?svcMeasure=' + cast(met.measureID as varchar(2)) + '&svcProv=' + z.abbrv + char(39) +'>' + measureTitle + '</a></td></tr></table>'

Отображается https://blah/reports_ssrs/report/subfolder1/subfolder материал / имя отчета? SvcMeasure = 8andsvcProv = brown '> моя мера

     set @tableHTML = @tableHTML + 
 N'<table border="1" cellspacing="1" cellpadding="2"><tr><td colspan="5" bgcolor="#68cbd0"><b>Table Title</b> </td></tr>' +
 CAST((SELECT  case when rs2.myBG='a' then '#F0FFF0' else '#FFC0CB' end  as [@bgcolor], 
 td  = cast(rs2.measureUrl as xml), '',  
 'center' as 'td/@align',td = '(of '+ convert(varchar(5),rs2.myPeerCount) +')',''  
 from (blah blah blah)rs2 FOR XML PATH('tr'), TYPE) AS NVARCHAR(MAX) ) +  N'</table>';

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

В конце концов я приступил к работе над созданием URL-адреса, но пропустил параметры & между

<a href="http://tada/folder/reportName?param1=blahparam2=blah" rel="nofollow noreferrer">http://tada/folder/reportName?param1=blahparam2=blah</a>

Затем проанализировал его для html с помощью

td=cast(replace(rs2.measureUrl,'&','and') as xml), '', 

Затем, перед тем как яотправьте dbMail, сделайте это

set @tableHTML=replace(@tableHTML,'param2','&param2=')

Возможно, не кошерно, но это работает!

0 голосов
/ 10 октября 2018

Используйте версию &amp; html вместо &

    declare @MySQL as varchar(max)='<table><tr><td>
    <a href=' + char(39) + 'https://blah/Reports_SSRS/report/subfolder1/Subfolder%20Stuff/report%20Name?svcMeasure=' + cast(met.measureID as varchar(2)) + '&amp;svcProv=' + z.abbrv + char(39) +'>' + measureTitle + '</a></td></tr></table>'
...