建立 DataSet
新增資料集:Employee.xsd
在 Employee.xsd 內新增 DataTable:dtEmploy,並建立 DataColumn
HireDate 和 BirthDate 的 DataType 要改為 System.DateTime,預設為 System.String
完成後就可以在資料來源視窗內看見該 DataSet
建立報表
利用報表精靈建立 ReportByCode.rdlc 報表
名稱:dsEmploy
資料來源:選擇剛剛建立的 Employee DataSet
可用資料集:Employee.xsd 內的 dtEmploy DataTable
把全部欄位都拖曳到值的位置
練習用,沒有群組和彙總需求
選擇樣式
ReportByCode 報表配置
從報表資料視窗內可以看見剛剛的設定
ReportViewer 控件
拖曳一個 ReportViewer 控件進入 Form 中,並選擇報表
設定資料來源
從 AdventureWorks2014 內抓取資料,並塞到 ReportViewer 內
CREATE PROCEDURE GetEmployData
AS
SELECT
E.BusinessEntityID ,
P.LastName ,
P.FirstName ,
E.JobTitle ,
E.Birthdate ,
E.HireDate
FROM [HumanResources].[Employee] AS E
JOIN Person.Person AS P ON E.BusinessEntityID = P.BusinessEntityID
using Microsoft.Reporting.WinForms;
using System.Data.SqlClient;
namespace RVByCode
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Employee dsEmploy = GetEmployData();
ReportDataSource datasource = new ReportDataSource("dsEmploy", dsEmploy.Tables[0]);
this.reportViewer1.LocalReport.DataSources.Clear();
this.reportViewer1.LocalReport.DataSources.Add(datasource);
this.reportViewer1.RefreshReport();
}
private Employee GetEmployData()
{
string ConnectionString = @"Data Source=.\Sql2014;Initial Catalog=AdventureWorks2014;Integrated Security = true";
using (SqlConnection con = new SqlConnection(ConnectionString))
{
try
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "GetEmployData";
SqlDataAdapter da = new SqlDataAdapter(cmd);
Employee dsEmploy = new Employee();
da.Fill(dsEmploy, "dtEmploy");
return dsEmploy;
}
catch (Exception)
{
throw;
}
}
}
}
}
檢視設定成果
ReportDataSource
只要是 DataSet 都一律用 ds 來當成開頭,沒想到執行時,還是有錯誤發生,錯誤訊息:尚未提供資料來源 'dsEmploy' 的資料來源執行個體
後來才發現是設定報表時,指定資料集名稱為 dsEmploy,ReportDataSource 的第一個參數要跟報表 DataSet 一模一樣才行
ReportDataSource datasource = new ReportDataSource("sourceEmploy", dsEmploy.Tables[0]);
// 改為
ReportDataSource datasource = new ReportDataSource("dsEmploy", dsEmploy.Tables[0]);
![[RV] 使用 WinForms ReportViewer 控制項-1](https://farm2.staticflickr.com/1614/25194661120_b8fdc236b4_z.jpg)
![[RV] 使用 WinForms ReportViewer 控制項-2](https://farm2.staticflickr.com/1696/25464130436_812c2690bb_z.jpg)
![[RV] 使用 WinForms ReportViewer 控制項-3](https://farm2.staticflickr.com/1711/24863554263_f71b829898_o.png)
![[RV] 使用 WinForms ReportViewer 控制項-4](https://farm2.staticflickr.com/1567/25122720649_1ff5d3a109_o.png)
![[RV] 使用 WinForms ReportViewer 控制項-5](https://farm2.staticflickr.com/1544/24863554243_0701de791c_z.jpg)
![[RV] 使用 WinForms ReportViewer 控制項-6](https://farm2.staticflickr.com/1574/25397442091_26dae72bea_z.jpg)
![[RV] 使用 WinForms ReportViewer 控制項-7](https://farm2.staticflickr.com/1678/24859700344_62015a914e_o.png)
![[RV] 使用 WinForms ReportViewer 控制項-8](https://farm2.staticflickr.com/1699/24859700294_935b880953_z.jpg)
![[RV] 使用 WinForms ReportViewer 控制項-9](https://farm2.staticflickr.com/1482/24863554073_8065177d20_z.jpg)
![[RV] 使用 WinForms ReportViewer 控制項-10](https://farm2.staticflickr.com/1697/25464130196_48537a40c8_z.jpg)
![[RV] 使用 WinForms ReportViewer 控制項-11](https://farm2.staticflickr.com/1508/25371809472_7f53d29eb1_o.png)
![[RV] 使用 WinForms ReportViewer 控制項-12](https://farm2.staticflickr.com/1623/24863554433_85c1154b3e_z.jpg)
![[RV] 使用 WinForms ReportViewer 控制項-13](https://farm2.staticflickr.com/1571/25397442391_1892d62718_z.jpg)
![[RV] 使用 WinForms ReportViewer 控制項-14](https://farm2.staticflickr.com/1709/25397442291_c816c65374_o.png)
沒有留言:
張貼留言