執行時動態建立報表(四)呼叫rdlc檔案

2021-05-23 23:37:44 字數 1610 閱讀 7989

前面介紹了如何建立rdlc檔案,檔案建立後如何呼叫呢。最容易想到的方法就是通過reportviewer的localreport.reportpath屬性直接載入rdlc檔案,然後再通過reportviewer的localreport.datasources.add(new reportdatasource(datasourcename,datasourcevale))來載入資料。rdlc檔案已經建立完成,但是datasource怎麼建立呢?如果每次有新的需求都要從新寫**建立datasource我們就失去了動態的意義。因此我們應該發明一種方法,不需要修改**,只需要通過配置引數就可以實現datasource的建立。下面我們先來看看下面的內容

<?xml version="1.0" encoding="utf-8"?>

'' and regdate <''  and wastation>0  order by regdate " conn="conn2">

='' and regdate <'' and wastation>0  group by  datepart(hour, endtime) union all select  datepart(hour, nonce) as hr, isnull(count(*), 0) as countnum,'錄入量' as type from core where regdate>='' and regdate <'' and wastation>0 group by  datepart(hour, nonce)" conn="conn2">

上面xml檔案定義了datasource、rdlc、rdlcdata三個節點,分別表示有哪些資料庫連線、哪些rdlc檔案、rdlc檔案資料**。

首先看datasource他只有connectionstring 元素用來定義資料庫的連線方式,目前我們只支援sql server資料庫。

然後我們在看rdlc項,它有name、data、file、type四個屬性,分別定義節點的名稱、rdlc檔案所需要的資料應對應的rdlcdata節點、rdlc檔案路徑、rdlc包含的報表項(0=table1,1=matrix,2=chart,3=復合)。

最後看rdlcdata節點,它有name、sql、conn屬性,分別為節點的名稱、獲取資料的sql指令碼、對應的資料連線(指向datasource)

同時此節點還包含若干params子節點,如果sql指令碼中有where查詢條件,我們就需要定義這些條件的值應該怎樣獲取,例如我們有時間型別的查詢條件我們就要要求使用者輸入時間,如果有讓客戶選擇的查詢條件,我們就要為使用者提供dropdownlist供使用者選擇。params節點就是用來完成此項定義的。它有name、type、itemtype、itemstr、default、dispcontent屬性,分別表示節點名稱、用來給使用者輸入查詢條件的控制項的型別0=textbox1,1=calender,2=dropdownlist,如果type=2那麼就要定義dropdownlist內容的如何獲得,這時我們就需要通過itemtype來定義dropdownlist資料來源,0=通過資料庫邦定,邦定資料的sql指令碼在itemstr中給出;如果itemtype=1表示資料來源為自定義資料來源,我們通過itemstr給出。default屬性表示預設值;dispcontent屬性是顯示給使用者說明查詢條件是什麼,例如我們有需要輸入開始日期和結束日期作為查詢條件,我們就要告訴使用者這兩項分別是開始時間和結束時間。

執行時動態建立報表 五 報表設計器

執行時動態建立報表 四 中介紹了如何通過配置檔案呼叫rdlc檔案,本文將介紹如何建立配置檔案。我將以例項的方式給與講解。報表最重要的元素是資料,因此我們首先介紹如何配置資料庫。如下圖 首先我們要建立乙個專案,這裡的專案實際就是配置檔案名稱,建立乙個專案就是建立乙個檔案。有了專案我們就要填寫專案的血肉...

執行時動態建立報表(一)問題提出

很多時候,客戶可能隨時提出新的報表要求,我們不得不再修改 建立新的報表。因此我們會想,可不可以設計乙個架構,只修改後台的定義檔案,客戶端就可以根據定義檔案展現不同的報表。網上已經有了很多利用ms 的reportviewer動態建立報表的介紹。我在研究這些文章後覺得,完全可以實現上面的設想。目前已經設...

報表執行時的報表合併

activereports能夠實現在報表執行時合併報表,即在使用activereports的設計器建立了好幾個不同的報表後,通過幾行 進一步進行合併,作為乙個報表檔案在報表瀏覽器中預覽處理。需要在建立的每個報表中使用addrange方法新增pagescollection就可以了。所得的 report...