为了账号安全,请及时绑定邮箱和手机立即绑定

SSRS 2017 通过单击报告字段打开具有多个电子邮件地址的 Outlook 电子邮件

SSRS 2017 通过单击报告字段打开具有多个电子邮件地址的 Outlook 电子邮件

慕森卡 2023-07-14 16:29:22
我在将多个电子邮件地址添加到 Outlook 电子邮件中时遇到问题。我已在报告中设置操作“转到 URL”文本框属性字段,如下所示:-="javascript:void(window.open('mailto:" + First(Fields!SUPP_EMAIL.Value, "SUPP_Email")+"'))"数据集根据主表中的参数进行过滤。我尝试了多种方法将多个电子邮件地址放入电子邮件窗口,但每次我只得到列表中的第一个,这有点像函数所说的“首先”!我从一位用户在 MSDN 上的另一篇文章中选择了 javascript 建议,该用户声称通过此解决方案,他们能够从过滤后的数据集中获取所有地址。这个想法是,一旦过滤了报告,用户就可以单击用“转到 URL”表达式指定的字段,然后将打开一个 Outlook 电子邮件窗口,其中包含“收件人”框中过滤列表中的所有电子邮件地址。如果有人有任何建议,我将不胜感激。
查看完整描述

2 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

您可以连接报告源中的值。


SQL 示例:

WITH

la_service_provider_service

AS

(

   SELECT tbl.* FROM (VALUES

    ( 1, '1@gmail.com')

   , ( 1, '2@gmail.com')

   , ( 1, '3@gmail.com')

   , ( 2, '4@gmail.com')

   , ( 2, '5@gmail.com')

   , ( 2, '6@gmail.com')

   , ( 2, '7@gmail.com')

   ) tbl ([LA_SERVICE_PROVIDER_ID], [PROVIDER_EMAIL]) 

)

SELECT 

    [lasps].[LA_SERVICE_PROVIDER_ID]

   , [lasps].[PROVIDER_EMAIL]

   , [ALL_PROVIDER_EMAILS] = 

     STUFF( (SELECT '; '+ [PROVIDER_EMAIL] 

           FROM [la_service_provider_service] AS [lasps2]

           WHERE [lasps2].[LA_SERVICE_PROVIDER_ID] = [lasps].[LA_SERVICE_PROVIDER_ID]

           FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(2000)')

        ,1,2,'')

FROM 

   [la_service_provider_service] AS [lasps];

结果:

//img1.sycdn.imooc.com//64b1078e0001d39f05940177.jpg

查看完整回答
反对 回复 2023-07-14
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

根据您拥有的电子邮件地址数量,您可能会达到限制。

但是,假设您的数据集非常小,您可以这样做......

创建一个新参数(例如pEmail)并使其成为多值。稍后我们将隐藏此参数...

接下来,将参数的可用值和默认值添加到主数据集,并使用该SUPP_EMAIL字段作为值。

在您的 URL 表达式中使用以下内容

="javascript:void(window.open('mailto:" 
  + JOIN(Parameters!pEmail.Value, ";")
  + "'))"

一旦它起作用,您可以将参数设置为隐藏。

正如您所说,我已将;其用作 Outlook 的分隔符,请注意,Outlook 在这方面几乎是唯一的,并且大多数邮件客户端使用逗号而不是分号。

话虽如此,这在 SQL 中会更容易完成,并构建一个单行结果集,其中包含可供在报告中使用的 URL。


查看完整回答
反对 回复 2023-07-14
  • 2 回答
  • 0 关注
  • 77 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信