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

Javascript SSRS 2017通过单击报告字段打开具有多个电子邮件地址的Outlook电子邮件,javascript,reporting-services,Javascript,Reporting Services,在Outlook电子邮件中获取多个电子邮件地址时遇到问题。 我在报告中设置了操作“转到URL”文本框属性字段,如下所示:- =“javascript:void(window.open('mailto:“+First(Fields!SUPP_EMAIL.Value,“SUPP_EMAIL”)+”)”)” 数据集将根据主表中的参数进行过滤。 我尝试了几种方法将多个电子邮件地址输入到电子邮件窗口,但每次我只获得列表中的第一个地址,正如函数所说,这是有意义的! 我从MSDN上的另一篇帖子中得到了java

在Outlook电子邮件中获取多个电子邮件地址时遇到问题。 我在报告中设置了操作“转到URL”文本框属性字段,如下所示:-

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

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

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

然而,假设您的数据集非常小,您可以这样做

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

接下来,将参数的可用值和默认值添加到主数据集中,并使用
SUPP\u EMAIL
字段作为值

在URL表达式上使用以下命令

="javascript:void(window.open('mailto:" 
  + JOIN(Parameters!pEmail.Value, ";")
  + "'))"
一旦工作,您可以将参数设置为隐藏

我用了
正如您所说的outlook的分隔符,请注意outlook在这方面几乎是唯一的,大多数邮件客户端使用逗号而不是分号


话虽如此,在SQL中这样做会更容易,并构建一个单行结果集,其中包含已构建的URL,以便在报表中使用。

您可以将报表源中的值连接起来

SQL示例: 结果:

您可以发布报告的SQL吗?有一种方法可以将一列的值连接到一行。您好,电子邮件地址的sql非常简单,我希望不要太简单,请从LA_SERVICE_PROVIDER_ID选择lasps.lasps.PROVIDER_email,lasps SERVICE_PROVIDER_SERVICE laspsHi Alan,非常感谢您的回答,因为它解决了我遇到的问题。我现在只需要找出一种方法,来突破“收件人”字段中电子邮件地址数量的限制。用户可以过滤输出,以便使用较小的数据集,但我知道它们将返回顶部,并要求在某个时候输出所有数据集!我将在适当的时候调查我们如何使用小组。不幸的是,由于电子邮件地址都是外部的,这可能是不可能的。我不确定你能超过这个限制。您可能会有一个文本框,其中包含用分号分隔的所有电子邮件地址,并要求用户手动将其复制到电子邮件收件人列表中。如果您对原始答案解决了您的问题感到高兴,请将答案标记为已接受。。谢谢
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];