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


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



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

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


ثانيا -  اعداد التقارير
-          اولا التكوين او الهيكل  : ينقسم الـReport   الي ثلاث اجزاء هي

·         الراس – Header

-          وهو المكان الذي يوضع فيه العنواين والتورايخ واشياء اخرى مثل شعار الشركة وارقام التليفونات بمعني اخر يعتبر رأس التقرير هو تعريف التقرير وهو مهم جدا في اي تقرير .

·         الجسم – Body  

-          وهو المكان الذي يوضع به تفاصيل التقرير مثل المعاملات التجارية بشكل موجز او مفصل والاجماليات

·         الذيل او نهاية الصفحه – Footer

-          يمكن ان يوضع في نهاية الصفحه معلومات مثل رقم الصفحه ومعلومات حقوق النشر  ومعلومات اخري طبقا لرغبة المصمم او العميل

-          ادوات التقرير -  Report Tool Box

في الفقره الاتيه ساتطرق الي الادوات التي سيتم استخدامها في المثال :

·         Table

-          الـ Table  هي من اهم الادوات التي يستخدمها المطورون في عملهم كما هو واضح من الاسم تستخدم الـ Table  لعرض البيانات بطريقة رائعه تتكون الـ Table  من

                         أ – الراس – Header : يستخدم في اظهار اسماء الـ Columns  المستخدمة .
                        ب – التفاصيل  - Detail : يستخدم لعرض البيانات في شكل صفوف بشكل ألي .
                        جـ - الذيل Footer : يستخدم لانشاء ملخص او اجماليات .

·         TextBox

-          يمكن استخدام الـ Text Box  لاضافه عنوان الريبورت او استخدامها في Page Header  او Page Footer  او في Body  كما يمكن ايضا استخدمها كـ Data Field  بمعني اخر غالبا ما تستخدم TextBox بشكل او باخر داخل الـ Report

الان بعد ملخص عن تكوين الـ Report  نقوم باضافه Report  جديد من Project Solution >> Add New Item
·         Line
-          يستخدم الـ Line  للفصل بين البيانات وفي التنسيق بشكل عام

-          ثانيا انشاء الـ Report

الان نقوم باضافه ريبور جديد من الـ
Project Solution >> Add >> New Item >> Report    

  

بعد اضافه Report  سنقوم باضافه Page Header  و Page Footer  
بالضغط بالزر الايمن للماوس علي الصفحه نقوم باختاير Page Header  و  Page Footer  او يمكن اختيارها من Tool Box  كما بالشكل


بعد تقسيم الصفحة يمكننا اضافه الادوات التي نريدها باستخدام  Report Tools  الان جاء دورك في اضافه الادوات لرأس وذيل التقرير كما تحب وقد قمت باضافه Textboxes  باراقام التليفوانات وبيانات شركتي كما بالشكل


سوف تلاحظ اضافتي لـ Field  مثل تاريخ الطباعه وعدد الصفحات في نهاية التقرير يمكنك اضافتها وبيانات اخري عن طريق
Report Data >> Built-in Fields  يمكن اظهار Report Data  من شريط القوائم بالضغط علي View  واختيار الـ Report Data  او عن طريق الضغط مباشرة علي CTRL + ALT + D



-          بعد تصميم الراس والذيل سنقوم بتوصيل الـ Report  بـ الـ DataSet  التي قمنا تم انشأها في الجزء الاول , عن طريق الـ Report Data  نقوم باختيار New  ثم DataSet ليظهر مربع حوار نقوم بتسميه التي نريدها ونختار الـ Dataset  المطلوبة



بعد الضغط علي OK  سوف يظهر لك الـ Dataset  بالحقول التي تم انشاءها في Rport Data
 والتي يمكن سحبها وافلاتها في اي مكان في التقرير الان سوف اقوم بتصميم عنوان التقرير في منطقة الـ Report Body
والذي سيكون عنوانه كالتالي
تقرير تواريخ الميلاد خلال الفتره من DateFrom  الي DatatTo



الان نقوم باضافه Table  لعرض التقرير من Tool Box  قم بسحب وافلات Table  ومن Properties ومن الخاصية DataSetName  نقوم باختيار الـ DatSet  التي قمنا باضافتها الي الـ Report  من قبل



بالضغط بالماوس علي Tablix  يمكننا اضافة عدد الـ Columns  التي نريد ان نقوم بعرضها وكما رأيت شكل الـ Table  وتقسيمها عن المرور بالماوس علي الصف الثاني DataRow  سيظهر لك مربع صغير بالضغط عليه يمكن اخنيار Field  الدذي تريده كما الشكل



بعد الانتهاء من تسمية الحقول في راس الـ Tabel  واضافه Data Field  يمكنك ان تقوم يتنسيق الـ Tabel كما تريد انظر الشكل الاتي :



الي الان تم الانتهاء من الجزء الثاني لاعداد التقارير , في الجزء الثالث سأسرد طريقة عرض التقرير باستخدام الـ C#