none
RDLC Table 頁尾一問 RRS feed

  • 問題

  • 問題是我用 VB 2008 Report viewer 想做一個 Quotation,
    在最後一頁放入一些總計資料 或 簽名的地方

    本人在用了 Table 來顯示中間的 Item 資料,並在 Table 頁尾放入一些總計資料

    在RDLC裡,Body的部份放入了Table來顯示資料,並在Table的資料列按右鍵insert群組
    然後在群組的運算式裡填入Int((RowNumber(Nothing)-1)/15) ,並勾選下方的Page break at end


    但預覽的時候,看到是 Item 下面便是總計的資料,也只有一頁,
    但到印出來,總計便被分開到下一頁

    請問有否人兄知道如何解決,或我放錯了地方 ??


    我已做了 :
    裝了 SP1
    Margin set 了全0


    Turbosolo
    2009年11月16日 下午 04:40

解答

  • Hi,

    這個問題是因為reportviewer 呼叫client端的axd物件去做render pdf檔案時,產生畫面看到的跟匯出的檔案format不同,所以可能要調整一下您的做法.


    1. 首先,我們要知道在報表樣板中,對於Table的Header, Detail, 以及Footer的描繪順序, 一開始會先render table的header, 然後是footer, 最後才是detail的部分.

    2. 所以如果我們可以設計一個可以判斷是第幾頁的方法,然後在最後一頁才秀出您要的資料,這樣就可以解決您的問題.


    您可以參考下列做法:


    1. 在Group的footer填入運算式: =Count(Fields!EmployeeID.Value,"DataSet2_Employees") , 兩個參數分別為要計算的欄位以及其範圍, 看您的做法,Sum去做處理
    ex: Sum(Fields!Qty.Value,"Your Dataset Name scope")



    2. 然後在Visibility的hidden運算式中填入:
    =iif((RowNumber(nothing) / Count(Fields!EmployeeID.Value, "DataSet2_Employees")) =1 ,false,true)

    這裡是指當最後一筆資料時才顯示上一步驟所計算出的運算式內容.



    3. 看reportviewer的內容: 我有15筆資料,每三筆為一頁. 所以count有15筆.




    4.  匯出的結果:








    希望以上對您有幫助




    Lolota
    微軟技術支援中心 (CSS)
    • 已標示為解答 Turbosolo 2009年11月18日 下午 04:15
    2009年11月18日 上午 11:46

所有回覆

  • HI,

    您可以設定成Page break at start, 不要設定Page break at end
    2009年11月17日 上午 01:23
  • 多謝你的回覆,

    Page break at start 雖然令我 Total 的資料沒有分開,

    但卻變成跟 Heading Info 斬開了,

    即是出完 Heading , 一個空白頁,

    下面則是正常的,請問有沒有其他方法 ?

    Turbosolo
    2009年11月17日 下午 03:36
  • 試試一個不太正常的方法
    把Table上關於換頁的設定都取消
    然後在頁面最下方放一個空白的矩形
    在該矩形設定中設定換頁
    學而不思則罔, 思而不學則殆.
    如果你一直都看不懂、不想學習看懂、抗拒看懂MSDN Library的話,那你最好放棄想要寫好程式這件事
    如果你自私地不肯回饋與分享,那別人為何要花時間回答你的問題?
    2009年11月17日 下午 04:18
    版主
  • 你好,
    現時我是在 Insert Group 中做 Page Break at End
    若把Table上關於換頁的設定都取消,那中間的資料只能分組不懂換頁,

    矩形應放在主體還是 Table ? 但我試了都應該不行,其實我目的是如何,請各位幫幫忙看看你們會如何做 ?



                 Quotation                         P.1 / 2

    ItemCode   Item Name   Qty
    XXXXX        XXXXX          1
    YYYYY         YYYYY            1
    XXXXX        XXXXX          1
    YYYYY         YYYYY            1

    ------------------------------------------------------

                                                         P. 2/2
    ItemCode   Item Name   Qty
    XXXXX        XXXXX          1
    YYYYY         YYYYY            1
    XXXXX        XXXXX          1
    YYYYY         YYYYY            1





    Total Qty 8

                               END
    -----------------------------------------------------


    Turbosolo
    2009年11月18日 上午 05:57
  • Hi,

    這個問題是因為reportviewer 呼叫client端的axd物件去做render pdf檔案時,產生畫面看到的跟匯出的檔案format不同,所以可能要調整一下您的做法.


    1. 首先,我們要知道在報表樣板中,對於Table的Header, Detail, 以及Footer的描繪順序, 一開始會先render table的header, 然後是footer, 最後才是detail的部分.

    2. 所以如果我們可以設計一個可以判斷是第幾頁的方法,然後在最後一頁才秀出您要的資料,這樣就可以解決您的問題.


    您可以參考下列做法:


    1. 在Group的footer填入運算式: =Count(Fields!EmployeeID.Value,"DataSet2_Employees") , 兩個參數分別為要計算的欄位以及其範圍, 看您的做法,Sum去做處理
    ex: Sum(Fields!Qty.Value,"Your Dataset Name scope")



    2. 然後在Visibility的hidden運算式中填入:
    =iif((RowNumber(nothing) / Count(Fields!EmployeeID.Value, "DataSet2_Employees")) =1 ,false,true)

    這裡是指當最後一筆資料時才顯示上一步驟所計算出的運算式內容.



    3. 看reportviewer的內容: 我有15筆資料,每三筆為一頁. 所以count有15筆.




    4.  匯出的結果:








    希望以上對您有幫助




    Lolota
    微軟技術支援中心 (CSS)
    • 已標示為解答 Turbosolo 2009年11月18日 下午 04:15
    2009年11月18日 上午 11:46
  • Lolota 大大,

    非常感謝你的回覆 !!

     Detail 跟 Footer據這個方法應可連在一起了,但最後還是會打一個空白頁,是 page break 的緣故嗎 ?
     我檢查過主體和頁首總和margin 不會超過報表 Size的

    大恩不言謝 !!


    Turbosolo
    2009年11月18日 下午 04:29
  • Lolota 大大,

    已經找到答案了,原來Table 要貼報著主體的底部。

    謝謝啦 !
    Turbosolo
    2009年11月20日 上午 11:29