用戶可以使用ActiveReports參數 (Parameters)集合把數據提供給報表中的文本框或圖表,也可以選擇數據的一個子集顯示到報表的特定區域,或者是把數據從主報表象子報表傳遞。用戶可以通過三種方式獲取數據的值:提示用戶輸入;從主報表取值并傳遞給子報表;從Windows form或者Web form上取值。
1、創建報表文件
在應用程序中創建一個名為 rptOrderDetails.rdlx 的 ActiveReports 報表文件,使用的項目模板為 ActiveReports 頁面報表,創建完成之后從 VS 的報表菜單項中選擇轉換為連續頁面布局(CPL)報表,將固定頁面報表轉換為連續頁面報表。
2、打開報表資源管理器,在參數節點中添加以下三個報表參數
3、打開報表資源管理器,并按照以下信息創建報表數據源
4、 添加數據集
在新建的 NWind_CHS 數據源上鼠標右鍵并選擇添加數據集菜單項
4.1、添加數據集參數
說明:在添加參數設置值屬性時,可以點擊下拉列表,并選中 表達式 選項,然后在表達式編輯對話框中設置參數的值
4.2、設置數據集其他屬性
常規-名稱:Products
查詢-查詢:
SELECT 產品.*,類別.類別名稱,類別.說明 AS 類別說明,類別.圖片 AS 類別圖片, 供應商.公司名稱 AS 供應商,供應商.聯系人姓名,供應商.城市,供應商.地址
FROM (供應商 INNER JOIN 產品 ON 供應商.供應商ID = 產品.供應商ID) INNER JOIN 類別 ON 產品.類別ID = 類別.類別ID
ORDER BY 產品.類別ID;
設置Products數據集的目的是為用戶提供產品名稱的選擇,如最終運行圖的左上角所示,因此我們需要為最開始設置的報表參數中的參數1設置可選值,右鍵點擊報表參數1,修改,選擇可選值標簽,設置信息:
查詢-查詢:
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
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
