2012-06-04 63 views
12

我需要報告「員工姓名」和「年齡」,但我不需要繼續下一頁的名稱;我需要繼續到下一欄。SSRS - 如何將數據繼續下一欄?

它應該是這樣的:

_________________________________________________ 
| Employee Name | Age | Employee Name | Age  | 
|_______________|_____|_______________|_________| 

任何人都可以發送管理這樣的一個報告?我正在使用Microsoft報告服務。

+0

它還挺很難看到你想要的東西:你是什麼意思「它繼續下一列」?此外,如果您告訴我們您迄今爲止嘗試過的以及爲什麼不起作用,它會有所幫助。 – Jeroen

回答

31

你想要一個多列報告的聲音。

在佈局選項卡上,右鍵點擊沒有任何報告對象的地方,然後選擇屬性。點擊佈局選項卡,並設置列的數量,你想在頁面上有多少列 - 在你的例子中它會是2.這將給你一個列左側佈局報告對象和灰色列右邊是您左邊的專欄將重複的位置。

不過,也有一些技巧在這裏:

  • 你列必須適應頁面或你不會得到任何列。例如,如果您的佈局設置默認爲1釐米的間距和2.5釐米的左右邊距,那麼您的列在A4(21釐米寬)頁面上的長度必須小於7.5釐米。否則,由於兩列不適合頁面,您只會獲得一列。
  • 設計器中的報告渲染器不支持多列,因此您只能在設計器中看到一列。 HTML呈現器也不支持多列,並且在部署到報告服務服務器時只顯示報告的一列,並顯示爲網頁。您需要將報告輸出到支持多列(例如PDF或打印機)的渲染器,以便實際查看多列報告中的列。

更新 - 僞造使用表

如果做不到這一點,得到它,以顯示你想要獨立的渲染器的方法是使用一劈兩桌,就像你嘗試多列報表,但訣竅是以交替的方式隱藏行。

爲了實現這個破解,創建兩個並排的表,它們都指向您的數據集。在第一個表的詳細行,對於可見性隱藏屬性使用下面的公式:

=iif((RowNumber(Nothing) Mod 2) = 1, False, True) 

上第二個表的詳細行,對於可見性隱藏屬性使用相對式:

=iif((RowNumber(Nothing) Mod 2) = 1, True, False) 

這意味着第一個表格將打印每一個奇數行,第二個表格將打印每一個偶數行,從而有效地爲您提供多個列輸出。

請注意,這是一個比真正的多列稍微不同的輸出,因爲它從左到右而不是在頁面下方讀取,然後像真正的多列一樣包裝到右列。但是,它具有在每個渲染器中正確渲染的優點。

您可以調整此方法以執行真正的多列,方法是計算您可以在InteractiveSize-Height屬性中適合頁面的行數,並在左表中顯示多個列,然後在右表中顯示多個列,然後在右表中顯示多列所以在整個報告中,但這可能是脆弱的,取決於渲染器和更改頁面佈局設置,如邊距。上述方法簡單有效。

+0

使用「SQL Server商業智能開發工作室」它是一個「SQL報表服務」我不知道「佈局選項卡」的位置 –

+0

佈局選項卡是您添加報表對象(表格,文本盒子等)的報告帶 –

+0

也許你不明白我的意思..所有我需要的是,當我創建此報告的數據顯示在12頁每頁顯示有一些行每行有1個我需要使每行都有2個emp而不是1個emp將頁面減少到6個而不是12個,所以我爲這個table1和table2創建表格,但是數據不應該是相同的,問題是數據在2個表格中重複,我不需要我需要table2是table1中的繼續數據。可以說,page1 table1最後一個emp是第20我需要table2在同一頁面開始與emp號碼21.我希望你明白和thx爲你的答案 –

0

我想要做EmployeeName和EmployeeTitle。我試圖在上面實現Chris的解決方案。我會得到每個表中的預期值,但它們會被複制。

我做了一些更多的研究,並最終得出了以下行可見性。

對於偶數行我使用:

=iif(RunningValue(Fields!jobtitle.Value, CountDistinct, "EmployeesDataSet") Mod 2 = 0, True, False) 

對於即使使用奇數rowsI:

=iif(RunningValue(Fields!jobtitle.Value, CountDistinct, "EmployeesDataSet") Mod 2 = 1, True, False) 

的rowgroup是在JOBTITLE。

來源:RowNumber for group in SSRS 2005