SSRS逗号分隔的字符串到多个超链接

时间:2019-03-04 18:10:17

标签: tsql reporting-services delimited-text

我在SSRS 2008中有一个报告。这些列之一可能包含也可能不包含以逗号分隔的一组值。数据的示例是:

string 1, string 2, string 3, string 4

它也可能只有一个值,例如字符串1,有时没有值(空)。

每个字符串都可以通过“父”链接进行超链接;父链接将保持不变,而字符串将仅位于结尾。

一个例子是:

https://www.website.com/value=string1
https://www.website.com/value=string2
https://www.website.com/value=string3
https://www.website.com/value=string4

以此类推;直到https://www.website.com/value=为止的所有内容都将与父超链接的一部分保持不变。

我当前的超链接代码如下(允许导出到Excel时进行超链接):

=IIF(Globals!RenderFormat.Name = "RPL","javascript:void(window.open('https://www.website.com/value=" & Fields!String1.Value & "','_blank'))","https://www.website.com/value=" & Fields!String1.Value)

如果我在该字段中只有一个值,但想知道如何将该表达式编码为超链接,则该方法非常有用:

  1. 多个用逗号分隔的字符串。

  2. 只有一个字符串

  3. 空值(如果为空,则忽略并且不超链接)

2 个答案:

答案 0 :(得分:1)

将此代码放在报表属性的“代码”部分中:

Public Function Hyperlink(strString As string) As String

  If IsNothing(strString) Or strString = "" then
        Return Nothing
  Else

  Dim listarray() As String
  Dim output As String
  listarray = split(strString, ",")

  For i As integer = 0 To listarray.length -1

      output = output & "https://www.website.com/value=" & listarray(i).tostring.trim & vbnewline       

  Next

  Return output

  End If

End Function

并使用以下命令在您的tablix表达式中调用它:

=Code.Hyperlink(Fields!YourField.Value)

,该字段的值为

Fields!YourField.Value = "string1, string2, string3, string4"

您将得到:

https://www.website.com/value=string1
https://www.website.com/value=string2
https://www.website.com/value=string3
https://www.website.com/value=string4

如果在用于选择URL的函数(文本框属性>“操作”>“转到URL”)中,在Tablix AND 的表达式中放置表达式Code.Hyperlink(Fields!YourField.Value),它将像在SSRS中一样运作超链接。

编辑:

然后使用html标签对链接进行编码。将功能更改为此:

Public Function Hyperlink(strString As string) As String

  If IsNothing(strString) Or strString = "" then
    Return Nothing
  Else

  Dim listarray() As String
  Dim output As String
  listarray = split(strString, ",")

  For i As integer = 0 To listarray.length -1

    output = output & "<a href=" & Chr(34) & "https://www.website.com/value=" & listarray(i).tostring.trim & Chr(34) & ">" & "https://www.website.com/value=" & listarray(i).tostring.trim & "</a>" & vbnewline       

  Next

  Return output

  End If

End Function

然后单击您的tablix文本框(在单元格中单击),然后右键单击>创建占位符...>常规,然后检查 HTML-将HTML标签解释为样式 。并且不要忘记删除动作表达式。您不再需要它。现在可以从html标记执行链接操作。

答案 1 :(得分:0)

链接1 连结2 连结3 以上内容适用于报表查看器的一个单元格。即使适用于PDF。下载为PDF,然后单击有效的链接。 但是当下载excel时,一个单元格具有所有三个链接。单击第一个链接可以使用,但是单击第二个链接时,它仅使用第一个链接。第三链接也一样。 我在 excel中尝试过提供一个链接,我们可以借助一个单元格的超链接来完成但不适用于单元格中的文本。 因此,在这种情况下,excel并不是我的知识。