ASP.NET RDLC 報表開發詳解

來源:互聯網
上載者:User

原來寫過的,當時不會上傳圖片,對不住各位。現在重整理了一下,有圖,比較詳細。

 

RDLC 報表開發

開啟Visual Studio 2005

建立ASP.NET 網站

添加資料集

會自動調出資料集配置視窗TableAdapter

如果上面的視窗沒有自動調出,可以如

可以調出上面的TableAdapter 視窗

建立立資料庫連接

下面的這一步會將資料庫連接儲存到config 檔案中

下面的這一步可以,選擇產生SQL的方式

讓我們先回到SQL Server Query Analyzer

開啟SQL Server 查詢分析器

建立如的預存程序

然後回到 Visual Studio 2005

選擇使用現在的預存程序,下一步

這裡,我們只需要選擇所需要的預存程序,如剛才建立的EmployeeReport 即可

點擊 完成。完成TableAdapter嚮導的配置.

添加報表專案

拖動一個Table 到報表設計師中

選擇網站資料集中的欄位,把它拖動到表格的列中

建立立一個ASPX頁面,拖動一個Report Viewer控制項到頁面中

在ReportViewer任務視窗中,選擇剛才建立的rdlc檔案

產生解決方案,然後執行

看到結果,報表執行完成

至此報表開發成功。

注意

1. 剛才的SQL 指令碼

CREATE PROC EmployeeReport

AS

SELECT * FROM Employee

GO

實際的報表開發中,一定不要用SELECT * ,只取報表中需要查看的欄位。

2. 有時候,可能需要使用者選擇一些條件,有選擇性的查看報表。而不是全部綁定資料

如,使用者可能只需要查看2008-9-29至2008-9-30時間段之間的資料

則作法如下

先建立好如的ASPX頁面,在View Report 事件中寫如下的程式

ReportViewer1.LocalReport.ReportPath = AppDomain.CurrentDomain.BaseDirectory + "/Report/Request.rdlc";

DateTime dtFrom =Convert.ToDateTime(txtDateFrom.Text);

DateTime dtTo =Convert.ToDateTime(txtDateTo.Text);

string requester = txtRequester.Text;

string dept = txtRequestDept.Text;

string material = ddlMaterial.SelectedValue;

string iprstatus = ddlStatus.SelectedValue;

DataTable reqrpt = ReportDB.RequestReport(dtFrom, dtTo, material, dept,requester, iprstatus);

if (reqrpt != null)

{

ReportViewer1.LocalReport.DataSources.Clear();

ReportViewer1.LocalReport.DataSources.Add(

new Microsoft.Reporting.WebForms.ReportDataSource("Request_RequestReport", reqrpt));

ReportViewer1.LocalReport.Refresh();

}

ReportViewer1.LocalReport.Refresh();

根據使用者所選的參數,把資料值傳到SQL語句中即可.下面是RequestReport方法的源碼

DataTable RequestReport(DateTime dtFrom, DateTime dtTo, string pMaterial, string pDept, string pRequester, string pIPRStatus) {

string MySQL = Purchase;

string whDate = " RequestDate BETWEEN '{0}' AND '{1}' ";

MySQL = MySQL + string.Format(whDate, dtFrom, dtTo);

string whMaterial = " AND MaterialCode='{0}' ";

if (pMaterial != "ALL")

{

MySQL = MySQL + string.Format(whMaterial, pMaterial);

}

string whDept = " AND RequestDepartment='{0}' ";

MySQL = MySQL + string.Format(whDept, pDept);

string whRequester=" AND Requester='{0}' ";

if(pRequester!="ALL")

MySQL = MySQL + string.Format(whRequester, pRequester);

string whIPRStatus = " AND IPRStatus={0} ";

if (pIPRStatus != "ALL")

{

MySQL = MySQL + string.Format(whIPRStatus, pIPRStatus);

}

IDataProvider privider = DataProvider.CreateDataProvider();

DataSet ds = privider.RetriveDataSet(MySQL);

if (ds != null && ds.Tables.Count > 0)

return ds.Tables[0];

else

return null;

}

const string Purchase="SELECT SerialNO,LedgerAcc,CostCenter,Requester,"+

" RequestDate,RequestDepartment,MaterialCode, " +

" Brand,Specifications,Unit,Quantity,Usage, "+

" ExpectedDeliveryDate,Currency "+

" ,Quotation1Supplier,Quotation1UnitPrice,Quotation1Amount, "+

" Quotation2Supplier,Quotation2UnitPrice,Quotation2Amount, "+

" Quotation3Supplier, Quotation3UnitPrice, Quotation3Amount, "+

" ProposedQuotationSupplier, ProposedQuotationUnitPrice, "+

" ProposedQuotationAmount,QuotationRemarks ,IPRStatus,QtyTo, UnitPriceTo FROM IPR WHERE ";

3. 設計報表時,可以用上述的方法,實際運行時,可以替換成SQL 陳述式,傳到ReportDataSource中即可,只要相當的表結構欄位是存在的。

4. 報表的定義是XML結構的,如果熟悉報表的定義格式規範,可以用文字編輯器開啟直接修改。

5. 如果採用SQL Server 2005的伺服器端報表,可能還會有進一步的方便設計和開發的地方.這裡採用的是.net framework的組件,用戶端只需要安裝.net framework2.0即可,無需安裝額外的組件.

 

原文串連如下

RDLC 報表開發

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.