【问题标题】:SSRS 2017 Open Outlook email with multiple email addresses by clicking on a report fieldSSRS 2017 通过单击报告字段打开具有多个电子邮件地址的 Outlook 电子邮件
【发布时间】:2021-02-19 13:43:11
【问题描述】:

我无法将多个电子邮件地址输入到 Outlook 电子邮件中。 我在报告中设置了操作“转到 URL”文本框属性字段,如下所示:-

="javascript:void(window.open('mailto:" + First(Fields!SUPP_EMAIL.Value, "SUPP_Email")+"'))"

根据主表中的参数过滤数据集。 我已经尝试了几种方法让多个电子邮件地址进入电子邮件窗口,但每次我只得到列表中的第一个,这有点像函数所说的第一! 我从 MSDN 上的另一篇帖子中选择了一个用户的 javascript 建议,该用户声称使用此解决方案他们能够从过滤的数据集中获取所有地址。 这个想法是,一旦过滤了报告,用户可以单击使用“转到 URL”表达式指定的/a 字段,Outlook 电子邮件窗口将打开,其中包含“收件人”框中过滤列表中的所有电子邮件地址。 如果有人有任何建议,我将不胜感激。

【问题讨论】:

  • 您能发布报告的 SQL 吗?有一种方法可以将一列的值连接到一行。
  • 您好,用于电子邮件地址的 sql 非常多,希望不要太简单,SELECT lasps.LA_SERVICE_PROVIDER_ID, lasps.PROVIDER_EMAIL FROM la_service_provider_service lasps

标签: javascript reporting-services


【解决方案1】:

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

示例 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];

结果:

【讨论】:

    【解决方案2】:

    根据您拥有的电子邮件地址数量,您可能会达到限制。有关详细信息,请参阅此答案....

    Emailing to multiple recipients with html Mailto: not working

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

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

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

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

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

    一旦生效,您可以将参数设置为隐藏。

    我使用; 作为分隔符,正如您所说的用于 Outlook,请注意 Outlook 在这方面几乎是独一无二的,大多数邮件客户端使用逗号而不是分号。

    话虽如此,这在 SQL 中会更容易实现,并构建一个包含已构建好的 URL 的单行结果集,以便在您的报告中使用。

    【讨论】:

    • 嗨艾伦,非常感谢您的回答,因为它解决了我遇到的问题。我现在只需要想出一种方法来突破“收件人”字段中可以拥有的电子邮件地址数量的限制。用户可以过滤输出以使用较小的数据集,但我知道他们会在某个时候返回并要求全部输出!我将在适当的时候调查我们如何能够使用群组。不幸的是,由于电子邮件地址都是外部的,这可能是不可能的。
    • 我不确定你能否突破这个限制。您可能有一个文本框,其中包含用分号分隔的所有电子邮件地址,并要求用户手动将其复制到电子邮件收件人列表中。如果您很高兴原始答案解决了您的问题,请将答案标记为已接受。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    相关资源
    最近更新 更多