使用者可以使用葡萄城ActiveReports報表引數 (Parameters)集合把資料提供給報表中的文字框或圖表,也可以選擇資料的一個子集顯示到報表的特定區域,或者是把資料從主報表象子報表傳遞。使用者可以通過三種方式獲取資料的值:提示使用者輸入;從主報表取值並傳遞給子報表;從Windows form或者Web form上取值。
1、建立報表檔案
在應用程式中建立一個名為 rptOrderDetails.rdlx 的 ActiveReports 報表檔案,使用的專案模板為 ActiveReports 頁面報表,建立完成之後從 VS 的報表選單項中選擇轉換為連續頁面佈局(CPL)報表,將固定頁面報表轉換為連續頁面報表。
2、開啟報表資源管理器,在引數節點中新增以下三個報表引數
引數1: | 名稱:ProductID 資料型別:Integer 提示使用者輸入值顯示的問題:產品名稱: 多值:True |
引數2: | 名稱:StartDate 資料型別:DateTime 提示使用者輸入值顯示的問題:起始日期: |
引數3: | 名稱:EndDate 資料型別:DateTime 提示使用者輸入值顯示的問題:截止日期: |
3、開啟報表資源管理器,並按照以下資訊建立報表資料來源
名稱: | NWind_CHS |
型別: | Micorsoft OleDb Provider |
OLE DB 提供程式: | Microsoft.Jet.OLEDB.4.0 |
伺服器或檔名稱: | Data\NWind_CHS.mdb |
4、 新增資料集
在新建的 NWind_CHS 資料來源上滑鼠右鍵並選擇新增資料集選單項
4.1、新增資料集引數
引數1: | 名稱:Param1 值:=[@ProductID] |
引數2: | 名稱:Param2 值:=[@ProductID] |
引數3: | 名稱:Param3 值:=[@StartDate] |
引數4: | 名稱:Param1 值:=[@EndDate] |
說明:在新增引數設定值屬性時,可以點選下拉選單,並選中 表示式 選項,然後在表示式編輯對話方塊中設定引數的值
4.2、設定資料集其他屬性
常規-名稱:OrderDetails
查詢-查詢:
SELECT 訂單.訂單ID, 訂單.客戶ID, 訂單.訂購日期, 產品.產品名稱,訂單明細.數量, 訂單明細.單價, 訂單明細.折扣 from (( 訂單 inner join 訂單明細 on 訂單.訂單ID = 訂單明細.訂單ID ) inner join 產品 on 訂單明細.產品ID = 產品.產品ID ) where (訂單明細.產品ID in (?) or -1 in (?)) and DateDiff("d",?,訂購日期) > 0 and DateDiff("d",?,訂購日期) < 0 ORDER BY 訂單.訂單ID;
說明:在以上查詢語句 Where 條件中使用了引數查詢,引數使用的是 ? 佔位,? 的出現順序需要與資料集引數中定義的引數順序一致。同時, ? 是 Access 中的查詢引數設定方式, SQL Server 中需要使用以 @ 開始的字串作為引數。
5、設計報表介面
從 Visual Studio 工具箱中將 Table 控制元件新增到報表設計介面,並將 OrderDetails 資料集中的欄位拖拽到 Table 的相應列中,得到的設計介面如下:
6、執行程式
通過 F5 鍵執行程式,在引數皮膚中輸入值之後,點選檢視報表按鈕,將得到以下結果:
7、自定義報表引數皮膚
ActiveReports 報表處理支援內建的報表引數皮膚,您還可以提供獨立於報表Viewer控制元件的自定義報表引數皮膚,類似的實現效果如下:
然後在“執行報表”按鈕的Click事件中實現報表引數的設定並執行報表:
protected void btnRun_Click(object sender, EventArgs e)
{
GrapeCity.ActiveReports.PageReport report1 = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath("PageReport1.rdlx")));
report1.Report.ReportParameters[0].DefaultValue.Values.Add(txtParam.Text);
WebViewer1.Report = report1;
}
原始碼下載地址:
http://www.gcpowertools.com.cn/products/activereports_demo.htm
相關閱讀: