2011-04-21 106 views
6

我一直在與SSRS爭鬥太久,現在應該是一件簡單的事情。我希望有人能幫助我看到解決方案。Tablix頭不在新頁面上重複,子報表導致頁面中斷

我有一個包含多個配置文件的報告,每個配置文件都有大量的數據部分。數據部分(各種表格和圖表)除了「鍵入」父配置文件ID之外,並不以任何方式相互關聯。

目標(看起來很簡單)是在每個頁面上都有一個包含配置文件信息的標題,然後將數據部分(每個格式完全不同)佈置。

我們遇到的第一個問題是,由於某種原因,SSRS2008不允許tablix單元使用不同的數據集包含另一個tablix(爲什麼它不能僅僅需要基於父組的過濾器就是我)。對於這個缺點,推薦的解決方法是將所有數據合併到一個巨大的數據集中(這裏不可能,數據部分太多而且各不相同),或者嵌入子報表並傳入參數。雖然選項2增加了打印大量配置文件所需的「工作」,但我們繼續執行此操作,並且確實工作了

問題出現在包含子報表的主Tablix上,該表中有一個靜態行標題組,其設置爲「RepeatOnNewPage = true」。此設置允許標題顯示在每個頁面上,除了子報表跨越多個頁面,,其中標題被錯誤地省略

由於某些原因,當子報表跨越多個頁面時,父tablix的標題不會重複!這讓我瘋狂,因爲看起來SSRS中的一些糟糕的設計決定讓我陷入了無法創建我想要的報告的情況......標題沒有使用子報表,但我需要子報表才能「加入「數據部分到配置文件。

這似乎是一個簡單和普遍的要求...畢竟,這是一個正在從一個幾十年前的報告系統遷移的報告。我已經搜刮了StackOverflow和Google沒有取得成功......我似乎有許多關於分頁符的問題/答案,但沒有任何建議解決這個子報表的問題。

我正在發佈這個以防萬一我失去了一些東西。如果有人有任何建議,將不勝感激。

+1

我們有關於這個問題的更多信息。缺少的標題看起來與使用子報表沒有關係,而是當Tablix行分割成多個頁面時,Tablix行標題無法打印(在其他頁面上)。該子報表位於一個tablix行(由於我們上面提到的「連接」限制),並且子報表可以很容易地大於一頁長度。任何幫助或建議,將如此讚賞。 – codinginthevoid 2011-04-27 18:09:37

回答

1

我們解決了我們的問題......雖然不是最理想的方式。

頁眉(「主」報告,而不是子報表)似乎是只有方式來始終有一個標題部分。

我們實現了基於大部份在這個博客上張貼的解決方案: Maintaining State in Reporting Services 2008

我們從博客帖子略作修改,去除方法「ID」和包括GUID,以確保報告值不混合即使用戶同時運行多份報告也是如此。 (使用共享變量時,請記住它們對於在報表服務器上跨執行實例和用戶運行的報表是全局的,因此在使用它們時需要多加小心!)

報告體,我們有一個調用一個隱藏的文本塊:

=Code.SetValue("xxx",Fields!Field1.Value) & Code.SetValue("yyy",Fields!Field2.Value) 

,並在報告頁頭我們引用這些(舉例來說):

=Code.GetValue("xxx") 

這工作,因爲在頁眉之前計算正文,即使對於Page 1

儘管如此,最終它對於微軟產品中應該有的東西是一種破壞,因爲它們已經投入了一年發展成這個產品!爲什麼我們不能擁有嵌套的tablix和更容易使用的頭文件呢......再次,這是從90年代初的一個程序升級報告,它完成了所有這些都沒有問題。至少,給我們報告變量,可以在報告處理時檢索和設置!

無論如何,事情就像它們一樣......我們已經用共享變量測試瞭解決方案,它似乎工作得很好。我們將開展壓力測試以確保它的實施正確,如果我們發現任何其他問題,我會在這裏發佈一些信息。

(如果有人的一些其他的方式知道要獲得一致的標題行的頁面,即使有大的高度明細行,請分享...)

+0

您是否可以設置子報告中的值或僅通過「主」報告? – Glenn 2016-03-07 21:31:02

2

我也遇到同樣的問題,以及。我發現解決問題的方法是對數據進行反規範化處理,添加一個「記錄類型」字段以確定該行是父母還是孩子。

我的tablix中有兩個子表,它們都顯示鏈接到外部分組的詳細數據。如果我在每個頁面上重複設置子表頭(使用高級箭頭>靜態屬性> KeepTogether = True,KeepWithGroup = After,RepeatOnNewPage = True),則其中一個子表將正確顯示,但是父項表格的重複標題就會消失。爲了長話短說,這是一個非常煩人的問題,需要解決。解決方案很簡單,它爲我工作,但可能不適用於每個人。

以下鏈接是一個SSRS2008示例RDL,它連接到本地主機,並具有我遇到的問題示例以及我實現的解決方案。如果您覺得它有用,請隨時使用它!

(我已經張貼在這裏,但堆棧溢出的失敗似乎代碼塊)

http://www.sqlservercentral.com/Forums/Topic1111567-1633-1.aspx?Update=1

1

在實施客戶對SSRS報告的要求時,我們遇到了完全相同的問題, 並嘗試了很多所有這些都導致失敗的結果URE。

在我們的案例中, 主報告有4個子報表。每個SubReport應該在新頁面中啓動。此外,當新的子報表開始時,頁面標題應該基於當前頁面中的子報表在主體中動態更改。

另外一個子報表SubReport3有另一個案例。基本上主要報告是基於經銷商級別運行的。但是Customer需要SubReport3針對與@Dealer參數相關的每個SubDealer運行。此外,客戶希望在SubReport3中的新頁面中看到每個SubDealer數據。

因此,我們發現不同的解決方法如下。

我們創建了頁眉到主報告。 (報告菜單 - >添加頁面標題)(as @codinginthevoid表示它是最一致的方式)

我們在獨立的tablix中放置了4個子報告。我們爲每個tablix添加了新的列。在每個tablix visiblity = false的列中,該列的寬度可以儘可能小,然後在該列內創建佔位符,如下所示:

如果表達式在Tablix1中,表達式爲=「Tablix1」中,如果在Tablix2然後「Tablix2」等

然後開始設計頁標題爲Tablix1,這是推吞下Tablix1在pageheader每個報告項具有能見度表達如下:

=ReportItems!Tablix1_HiddenTextbox1.Value IS NOTHING

然後施加同用於Tablix2等。

最後,報表的PageHeader中有很多文本框,其中一些位置是完全相同的,重疊的,但是當呈現報表時,每個文本框都顯示出來,它與相關的子報表是相關的頁面。