2012-03-29 102 views
3

我有一個報告將一個數據字段返回到Tablix控制字段。數據字段包含數據庫中的多行信息。下面的例子。 在SQL Server中,
「丹首席 - 總裁 - 印第安納辦公室」
「丹首席 - 」 & vbcrlf & 「CEO」 & 「 - 印第安納辦公室」
SSRS 2008多行數據在報告中顯示爲一行

的vbcrlf的不SQL Server中顯示,但我已經通過在SSRS中使用instr()確認它們存在。

我希望數據像這樣顯示。我可以刪除連字符和空格。
丹首席
首席執行官
印第安納辦公室

但在SSRS報告它全部顯示在同一行。我有自動增長複選框選中/開,仍然沒有。

歡迎任何想法。

謝謝。

回答

4

有兩個方向來完成此是。你想的方法取決於你是否格式化的文本作爲HTML(右鍵單擊單元格中的文本,選擇Placeholder Properties。如果標記類型爲HTML,使用下面的第一種方法。)

聽起來像你將它們呈現爲HTML,因爲如果將其設置爲無,則會顯示vbcrlf。

處理文本爲HTML:

您需要<br/>變量來替換vbcrlf。如果您在報告中使用嵌入式代碼,這是最簡單的。在報告的代碼中創建一個函數:報告菜單,報告屬性 - >代碼部分。

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(!字段ColumnA.Value)

如果不治療的文本作爲HTML

vbCrLf應在這種情況下被保存和顯示,所以如果這真的是你存儲在SQL中的,那麼你應該沒問題。如果你在字符串中有其他字符,你可以改變我上面提供的ReplaceLineBreaks函數來插入vbCrLf。

1

如果你的表中有vbCRLF,那麼這不是解決問題的正確方法。 SSRS會將vbcrlf渲染爲一個字符串,而不是以這種方式回車。

您應該返回3分獨立的列數據集:

名稱,角色,辦公

丹Cheif,CEO,印度辦事處

在你的表矩陣,那麼你可以做一種表達,你想要顯示此行:

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

我沒有太多的工作在SSRS上。但有一點我建議在該文本字段中創建一個佔位符。然後,您可以使用html樣式標籤將數據分成多行。但是,當然,我相信只有在多個表達式填充到同一個字段時,才能使用這種方法。沒有嘗試過數據庫本身包含多行信息的情況。希望下面的鏈接能更好地解釋這個過程。

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

你可以看到所有的HTML標籤在SSRS支持這裏

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

1

在我的情況下,我輸出到一個文本框中的Full_Address字段包含一個CR(CHAR(10),用SQL術語)但不是LF(CHAR(13))。 (通過使用CHARINDEX函數發現了這個)。 因此,我認爲完整地址的各行對SSR輸出沒有破壞性。當它在SSRS報告的文本框字段中水平地走出房間時,會出現這種情況。

那麼我在存儲過程中所做的是這樣的: SELECT ... REPLACE(Full_Address,CHAR(13),CHAR(10)+ CHAR(13))AS FullAddress,...