• <menu id="w2i4a"></menu>
  • logo FastReport.Net教程2020(持續(xù)更新中)

    文檔首頁>>FastReport.Net教程2020(持續(xù)更新中)>>如何根據(jù)父報(bào)表的條件顯示子報(bào)表

    如何根據(jù)父報(bào)表的條件顯示子報(bào)表


    許多現(xiàn)代的報(bào)表生成器都允許您嵌入另一個(gè)報(bào)表,即所謂的子報(bào)表。為什么要這么做?例如,為了方便設(shè)計(jì)報(bào)表。如果主報(bào)表和子報(bào)表具有不同的類型,則更容易分別創(chuàng)建它們。

    此外,通過以這種方式劃分報(bào)表,您可以根據(jù)條件控制報(bào)表的結(jié)構(gòu)。例如,您在主報(bào)表中顯示了一些基本信息,但是根據(jù)該數(shù)據(jù)或報(bào)表中的某些參數(shù),將選擇多個(gè)子報(bào)表之一。這使您的報(bào)表更具通用性。無需在不同情況下創(chuàng)建多個(gè)報(bào)表。

    ActiveReports報(bào)表生成器的用戶對(duì)此問題感到困惑:

    我有一個(gè)包含兩個(gè)子報(bào)表的報(bào)表。我想根據(jù)條件運(yùn)行或不運(yùn)行每個(gè)子報(bào)表。這可能嗎?

    技術(shù)支持回復(fù):

    是的,可以根據(jù)某些條件從父報(bào)表中選擇子報(bào)表。例如,您可以在Detail的Format Event中使用SubReport控件的Visible屬性,基于每次觸發(fā)Detail.OnFormat事件時(shí)都會(huì)增加的計(jì)數(shù)器變量來控制子報(bào)表的可見性。

    如何根據(jù)父報(bào)表的條件顯示子報(bào)表

    在FastReport.Net中,子報(bào)表僅在另一頁上創(chuàng)建,并且可以訪問與主報(bào)表相同的數(shù)據(jù)。主報(bào)表將一個(gè)子報(bào)表對(duì)象添加到您計(jì)劃放置該子報(bào)表的位置。該對(duì)象是將立即創(chuàng)建的報(bào)表頁面的鏈接。作為新報(bào)表頁面的一部分,您可以創(chuàng)建所需的模式。

    順便說一句,您可以先創(chuàng)建一個(gè)包含多個(gè)頁面的報(bào)表,然后,如果需要,可以添加一個(gè)子報(bào)表對(duì)象,并將其放在其屬性中,以鏈接到所需頁面。

    讓我們看一下如何根據(jù)條件制作帶有子報(bào)表的報(bào)表。實(shí)際上,這個(gè)想法很簡單。由于報(bào)表中包含腳本,因此我們將提供所需子報(bào)表的可見性。在這種情況下,子報(bào)表應(yīng)放在同一位置,一個(gè)對(duì)象放在另一個(gè)對(duì)象上。

    假設(shè)我們的報(bào)表顯示了訂單信息。還有一些與訂單表相關(guān)的報(bào)表:訂單詳細(xì)信息、產(chǎn)品、客戶。除了訂單信息外,我們還要列出訂單中的產(chǎn)品或客戶信息。該報(bào)表具有一個(gè)參數(shù),基于該參數(shù)我們將顯示產(chǎn)品列表或客戶信息。

    如何根據(jù)父報(bào)表的條件顯示子報(bào)表

    主報(bào)表的模板非常簡單:

    如何根據(jù)父報(bào)表的條件顯示子報(bào)表

    有關(guān)訂單的基本信息來自“Orders”訂單表。在添加的字段旁邊,我們有一個(gè)Subreport對(duì)象。在Subreport1屬性中,您絕對(duì)應(yīng)該將PrintOnParent屬性設(shè)置為true。

    當(dāng)我們添加子報(bào)表對(duì)象時(shí),會(huì)自動(dòng)添加一個(gè)新的報(bào)表頁面。在此頁面上,我們創(chuàng)建一個(gè)子報(bào)表模板,該模板將顯示產(chǎn)品列表。由于“Orders”訂單表與“Order Details”訂單明細(xì)相關(guān)聯(lián),因此該報(bào)表將顯示與當(dāng)前訂單相對(duì)應(yīng)的記錄。訂單明細(xì)表還具有與產(chǎn)品表的連接。我們將使用來自此連接的數(shù)據(jù):

    如何根據(jù)父報(bào)表的條件顯示子報(bào)表

    這就是為什么到字段的鏈接具有這樣的視圖的原因:Order Details.Products.ProductName。

    如何根據(jù)父報(bào)表的條件顯示子報(bào)表

    現(xiàn)在,再添加一個(gè)子報(bào)表對(duì)象。將其放在Subreport1上。您還需要將PrintOnParent屬性設(shè)置為true。

    如何根據(jù)父報(bào)表的條件顯示子報(bào)表

    在第二個(gè)子報(bào)表模板中,我們從“Customers”客戶表中添加一個(gè)與“Orders”訂單表有聯(lián)系的字段。

    現(xiàn)在,我們有了一個(gè)包含兩個(gè)子報(bào)表的報(bào)表。添加報(bào)表參數(shù)??梢詮膱?bào)表外部(例如,從用戶程序)設(shè)置參數(shù)。

    對(duì)于主報(bào)表中的Data band,創(chuàng)建一個(gè)處理程序BeforePrint事件:

    private void Data1_BeforePrint(object sender, EventArgs e)
     {
     if ((int)Report.GetParameterValue("Parameter") == 1)
     {
     Subreport1.Visible = false;
     Subreport2.Visible = true;
     }
     else
     {
     Subreport1.Visible = true;
     Subreport2.Visible = false;
     }
     }

    代碼很簡單,因此實(shí)際上基本的編程技能足以創(chuàng)建此類報(bào)表。

    結(jié)果,產(chǎn)品列表將如下所示:

    如何根據(jù)父報(bào)表的條件顯示子報(bào)表

    客戶信息表將如下所示:

    如何根據(jù)父報(bào)表的條件顯示子報(bào)表

     

     

    產(chǎn)品介紹 | 下載試用 | 優(yōu)惠活動(dòng) | 在線客服

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();