首页 > 解决方案 > SSRS Table Cell Mailto 链接(无论是“转到 URL”操作还是 HREF 链接)重复并掩盖了表格结果?

问题描述

我想我在 SSRS Report Viewer/SSRS Report Builder 中发现了一个实际的、真实的 Stack Overflow:

在我们的许多 SSRS 报告中,我们都有一张即将采取的行动和截止日期的表格。它是静态的,所以我超链接到动作编号。一切顺利——有点用处。

但通常我们必须向负责人发送提醒,所以我添加了一个动态 Mailto: 链接,该链接在表格中查找负责人的所有项目并制作提醒电子邮件,只需单击其姓名即可。

="mailto:" & Fields!PERSONID.Value & "@Domain.com" & 
"?subject=You%20have%20" & IIf(LookupSet(Fields!PERSONID.Value, Fields!PERSONID.Value, Fields!TICKETID.Value, "DataSet1").Length<=1,"a%20","") & "AB" & IIf(LookupSet(Fields!PERSONID.Value, Fields!PERSONID.Value, Fields!TICKETID.Value, "DataSet1").Length>1,"s","") & "%20due%20within%203%20days" 
& "&body=" & Fields!DISPLAYNAME.Value & "%2C%0D%0A%0D%0A" 
& "You%20have%20" & IIf(LookupSet(Fields!PERSONID.Value, Fields!PERSONID.Value, Fields!TICKETID.Value, "DataSet1").Length<=1,"a%20","") & "AB" & IIf(LookupSet(Fields!PERSONID.Value, Fields!PERSONID.Value, Fields!TICKETID.Value, "DataSet1").Length>1,"s","") & "%20on%20the%203-Day%20List%3A%0D%0A%0D%0A" 
& Uri.EscapeDataString(Join(LookupSet(Fields!PERSONID.Value, Fields!PERSONID.Value, Fields!strReminder.Value, "DataSet1"), " " & Chr(13) & Chr(10)))
& "%0D%0A%0D%0A" 
& "To%20see%20your%20items%3A%20%0Ahttps%3A%2F%2FMy123ABs.Domain.com%0Ahttps%3A%2F%2FMy123BCs.Domain.com%0Ahttps%3A%2F%2FMy123CDs.Domain.com%0A"

但是,只要我添加了带有长 mailto: 链接的“Go To URL”操作,报告就会开始显示重复的行,并忽略其他行

因此,我删除了“转到 URL”操作,而是将占位符表达式设置为显示 HTML,并使公式输出

<A HREF="(Same Mailto URL as above)">Indiv Name</A>

链接再次正常工作的地方购买重复的行正在替换应包含的其他行...

那么,SSRS 是否存在某种带有长 URL 的溢出错误?还是我错过了什么?

标签: reporting-servicesmailtoreportbuilder

解决方案


应修改https://docs.microsoft.com/en-us/sql/reporting-services/report-design/report-builder-functions-lookupset-function?view=sql-server-ver15上的文档 :

在 SSRS 中,针对当前在 Tablix 中呈现的同一数据集运行 Lookup() / LookupSet() 查询会导致重复和/或遗漏。防止重复和遗漏的一种解决方法是传递数据集的副本并仅针对该副本运行 Lookup() 或 LookupSet() 查询。

让我感到惊讶的是,SSRS 通过将 Lookup() 或 LookupSet() 优先于渲染 Tablix 来隐藏这一点,因此 Lookup() 或 LookupSet() 通常开发和测试最后一次工作,但现有表存在重复和遗漏。


推荐阅读