【问题标题】:SSRS 2008 multi-line data displaying as one line in reportSSRS 2008 多行数据在报告中显示为一行
【发布时间】:2012-03-29 16:48:52
【问题描述】:

我有一份报告将一个数据字段返回到 tablix 控件字段。数据字段包含数据库中的多行信息。下面的例子。 在 SQL Server 中,
“Dan Chief - CEO - Indiana Office”
“Dan Chief -” & vbcrlf & “Ceo” & “ - 印第安纳州办事处”

vbcrlf 不显示在 SQL Server 中,但我已通过在 SSRS 中使用 instr() 确认它们存在。

我希望数据像这样显示。我可以删除连字符和空格。
丹酋长
首席执行官
印第安纳州办事处

但在 SSRS 报告中,它全部显示在一行上。我选择/打开了自动增长复选框,但仍然没有。

欢迎提出任何想法。

谢谢。

【问题讨论】:

    标签: reporting-services


    【解决方案1】:

    有两个方向可以做到这一点。您想要的方法取决于您是否将文本格式化为 HTML(右键单击单元格中的文本,选择Placeholder Properties。如果标记类型为 HTML,请使用下面的第一种方法。)

    听起来您将这些显示为 HTML,因为如果您设置为无,则会显示 vbcrlf。

    将文本视为 HTML:

    您需要将 vbcrlf 替换为 <br/> 标记。如果您在报告中使用嵌入式代码,这是最简单的。在报表的代码中创建一个函数:报表菜单,报表属性 -> 代码部分。

    Public Function ReplaceLineBreaks(ByVal s As String) As String
       Dim strBuilder As New System.Text.StringBuilder(s)
       If s.Contains(vbCrLf) Then
          strBuilder.Replace(vbCrLf, "<br/>")
          Return strBuilder.ToString()
          Else : Return s
       End If
    End Function
    

    现在将您的字段设置为使用以下代码: =Code.ReplaceLineBreaks(Fields!ColumnA.Value)

    如果您不将文本视为 HTML

    在这种情况下应该保留并显示 vbCrLf,所以如果这确实是您在 SQL 中存储的内容,那么您应该没问题。如果字符串中有其他字符,则可以更改我上面提供的 ReplaceLineBreaks 函数以插入 vbCrLf。

    【讨论】:

      【解决方案2】:

      如果您的表中有 vbCRLF,那么这不是解决问题的正确方法。 SSRS 会将 vbcrlf 呈现为字符串,而不是以这种方式作为回车换行符。

      您应该将 3 个单独的列返回到您的数据集:

      姓名、职务、办公室

      Dan Cheif,印度办事处首席执行官

      然后,您可以在您的 tablix 中执行一个您希望显示此行的表达式:

      =DataSet!Name.Value & vbCRLF & DataSet!Role.Value & vbCRLF & DataSet!Office.Value
      

      【讨论】:

        【解决方案3】:

        我没有在 SSRS 上做太多工作。但我建议的一件事是在该文本字段中创建一个占位符。然后,您可以使用 html 样式标签将数据分成多行。但是,当然,我相信只有在同一字段中有多个表达式要填写时,您才能使用此方法。 Havent 尝试了一种情况,其中数据库本身包含多行信息。希望下面的链接能更好地解释这个过程。

        http://sqlserverpedia.com/blog/sql-server-bloggers/using-different-formats-within-a-single-textbox-in-ssrs/

        你可以在这里查看ssrs支持的所有html标签

        http://social.msdn.microsoft.com/Forums/en/sqlreportingservices/thread/3bffb40a-c67f-4cb2-a3dd-ce711200e8db

        【讨论】:

          【解决方案4】:

          在我的例子中,我输出到文本框的 Full_Address 字段包含一个 CR(用 SQL 术语来说是 CHAR(10)),但不包含一个 LF(CHAR(13))。 (通过使用 CHARINDEX 函数发现了这一点。) 所以我认为完整地址的各个行在 SSR 输出上并不是断行的。当 SSRS 报告的文本框字段空间不足时,横向来说,它有点断线。

          所以我在存储过程中所做的是: SELECT ...REPLACE(Full_Address, CHAR(13), CHAR(10) + CHAR(13)) AS FullAddress, ...

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多