مثال علي اعداد تقارير Microsoft Report - Client-Side Reporting الجزء الثالث والاخير


ثالثاً -  عرض التقرير
-          اعداد الـ 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();
           
        }
    }


الان قد انتهينا من اعداد عرض التقرير ومن المفترض ان تكون النتيجة كما بالشكل :



ملحوظة : يجب الاهتمام بتنسيق التقرير ليصبح الشكل النهائي افضل من ذلك فالتقارير من اهم الاجزاء التي يجب الاهتمام بها عند تطويرك لاي برمجيات .