ثالثاً - عرض التقرير
-
اعداد الـ Forms
الان بعد اعداد التقرير سنقوم باعداد عدد 2 Form , الـ Form الاولي سنضع بها 2 dateTimePicker وونعطيهم الاسماء dtFrom و dtTo علي الترتيب , وايضا نقوم بوضع button لياخذ الاسم btnShowReport ليكون الشكل
كالاتي :
الـ Form الثانية ستستخدم لعرض التقرير نقوم بوضع reportViewer من الـ ToolBox ونقوم بالاعلان عن DataSet وفي Form Constructor نقوم بوضع Dataset كـ parameter ليصبح الكود في Form 2 كالتالي
using
System.Data;
using
System.Drawing;
using
System.Linq;
using
System.Text;
using
System.Windows.Forms;
using
Microsoft.Reporting.WinForms;
namespace WindowsFormsApplication1
{
public
partial class Form2 : Form
{
DataSet DsReport = new DataSet();
public Form2(DataSet dsReport)
{
InitializeComponent();
DsReport =
dsReport;
}
}
}
وشكل Form2 كالتالي
وبالعودة للـ Form الاولي وبعد اضافة الحدث btnShowReport_Click بالضغط مرتين علي
زر العرض كما بالشكل الاول
يكون الكود كالتالي
using
System;
using
System.Data;
using
System.Text;
using
System.Windows.Forms;
using
Microsoft.Reporting.WinForms;
using
System.Data.SqlClient;
namespace WindowsFormsApplication1
{
public
partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnShowReport_Click(object sender, EventArgs
e)
{
string connstring = @"Data
Source=.\sqlexpress;Initial Catalog=birthdaydb;Integrated Security=True";
using (SqlConnection
MyConn = new SqlConnection(connstring))
{
SqlCommand Command = new
SqlCommand("Select
* from FUBirthDayReport(@DtFrom , @DtTo)", MyConn);
Command.CommandType = CommandType.Text;
Command.Parameters.AddWithValue("@DtFrom",
Convert.ToDateTime(dtFrom.Value));
Command.Parameters.AddWithValue("@DtTo",
Convert.ToDateTime(dtTo.Value));
MyConn.Open();
SqlDataReader Reader = Command.ExecuteReader();
DataSet dsReport = new
DataSet1();
dsReport.Tables[0].Load(Reader);
Reader.Close();
MyConn.Close();
Form2 frm2 = new Form2(dsReport);
frm2.ShowDialog();
}
}
}
}
وبالعودة الي Form2 لنقوم باكمال الكود النهائي كالتالي
public partial class
Form2 : Form
{
DataSet DsReport = new DataSet();
public Form2(DataSet dsReport)
{
InitializeComponent();
DsReport =
dsReport;
}
private void Form2_Load(object sender, EventArgs
e)
{
reportViewer1.Reset();
reportViewer1.LocalReport.ReportEmbeddedResource =
"WindowsFormsApplication1.BirthDayReport.rdlc";
ReportDataSource rds = new
ReportDataSource();
rds.Name = "DataSetBirthDay";
rds.Value =
DsReport.Tables[0];
reportViewer1.LocalReport.DataSources.Add(rds);
reportViewer1.RefreshReport();
}
}
الان قد انتهينا من اعداد عرض التقرير ومن
المفترض ان تكون النتيجة كما بالشكل :
ملحوظة : يجب الاهتمام بتنسيق التقرير ليصبح
الشكل النهائي افضل من ذلك فالتقارير من اهم الاجزاء التي يجب الاهتمام بها عند
تطويرك لاي برمجيات .