تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
بناء تقرير من فئة (Object)
#1
بسم الله الرحمن الرحيم

وصلى الله على محمد وآله الطاهرين

السلام عليكم ورحمة الله وبركاته



سنقوم في هذا الموضوع ببناء برنامج يقوم بطباعة تقرير من خلال فئة ( أي ان مصدر البيانات ستكون Object )

اولا سنقوم ببناء Class اسمه StudentsInfo من خلال Project--->AddClass بالشكل التالي:

C#

PHP كود :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 
ReportFromObject
{
 
   public class StudentsInfo
    
{
 
       // تسلس الطالب
 
       public int S_ID
        
setget; }
 
       // اسم الطالب
 
       public string S_FName
        
setget; }
 
       // تاريخ ولادة الطالب
 
       public DateTime S_BDate
        
setget; }
 
       // عنوان الطالب
 
       public string S_Address
        
setget; }
 
   }




VB

PHP كود :
Public Class StudentsInfo

    
' تسلس الطالب
    Public Property S_ID() As Integer
        Get
            Return m_S_ID
        End Get
        Set(value As Integer)
            m_S_ID = value
        End Set
    End Property
    Private m_S_ID As Integer
    ' 
اسم الطالب
    Public Property S_FName
() As String
        Get
            Return m_S_FName
        End Get
        Set
(value As String)
 
           m_S_FName value
        End Set
    End Property
    Private m_S_FName 
As String
    
' تاريخ ولادة الطالب
    Public Property S_BDate() As DateTime
        Get
            Return m_S_BDate
        End Get
        Set(value As DateTime)
            m_S_BDate = value
        End Set
    End Property
    Private m_S_BDate As DateTime
    ' 
عنوان الطالب
    Public Property S_Address
() As String
        Get
            Return m_S_Address
        End Get
        Set
(value As String)
 
           m_S_Address value
        End Set
    End Property
    Private m_S_Address 
As String

End 
Class 



ثانيا المتغيرات العامة:

C#

PHP كود :
private List<StudentsInfostd = new List<StudentsInfo>();
 
       private int id 1;

 
       public Form1()
 
       {
 
           InitializeComponent();

 
           id_txt.Text id.ToString();
 
       



VB

PHP كود :
Private std As New List(Of StudentsInfo)()
 
   Private id As Integer 1

    Sub 
New()

 
       ' This call is required by the designer.
        InitializeComponent()

        id_txt.Text = id.ToString()

        ' 
Add any initialization after the InitializeComponent() call.

 
   End Sub 


ثالثا: اضافة معلومات الطالب الى القائمة نكتبها في زر الاضافة:

C#

PHP كود :
std.Add(new StudentsInfo
                            
{
 
                               S_ID id,
 
                               S_FName name_txt.Text,
 
                               S_Address addr_txt.Text,
 
                               S_BDate DateTime.Parse(dob_txt.Text)
 
                           });

 
           id_txt.Text = (++id).ToString();

 
           name_txt.Text dob_txt.Text addr_txt.Text ""



VB

PHP كود :
 std.Add(New StudentsInfo() With _
    
.S_ID id_
    
.S_FName name_txt.Text_
    
.S_Address addr_txt.Text_
    
.S_BDate DateTime.Parse(dob_txt.Text_
   
})
 
       id id 1

        id_txt
.Text id

        name_txt
.Text ""
 
       addr_txt.Text ""
 
       dob_txt.Text " " 


رابعا: اضف نموذج جديد الى المشروع وقم بتسميته ReportForm بعدها قم باضافة أداة ReportViewer من صندوق الادوات الى النموذج بعدها نقوم بتصميم التقرير واختيار مصدر البيانات باتباع الخطوات التالية:




نختار Object لتكون مصدرا للبيانات



ثم نختار الفئة التي انشأناها كما في الشكل التالي





وغير شكل التقرير الى الذي تريد

بعدها تقوم بسحب الحقول الى RawGroups وغير شكل التقرير الى الذي الشكل تريدالان من أداة الReportViewer اختر التقرير ستلاحظ ان أداة اخرى اضيفت بشكل تلقائي الى النموذج باسم StudentsInfoBindingSource و وظيفة هذه الاداة هي اسناد مصدر البيانات اليهااجعل خاصية الModifire للأداة ولReportViewer يساوي Publicوكتب الكود التالي في زر الطباعة:

C#

PHP كود :
//std.Sort((x, y) => (x.S_FName.CompareTo(y.S_FName)));
 
           //or 
 
           std.OrderBy(name => name.S_FName);

 
           ReportForm repf = new ReportForm();
 
           repf.StudentsInfoBindingSource.DataSource std;
 
           repf.reportViewer1.RefreshReport();
 
           repf.Show(); 



VB

PHP كود :
'std.Sort(Function(x, y) (x.S_FName.CompareTo(y.S_FName)))
        '
or 
 
       std.OrderBy(Function(namename.S_FName)

 
       Dim repf As New ReportForm()
 
       repf.StudentsInfoBindingSource.DataSource std
        repf
.reportViewer1.RefreshReport()
 
       repf.Show() 



كما تلاحظون قمنا باستخدام تقنية Linq لترتيب القائمة حسب الاسم ومن ثم اسناد القائمة الى StudentsInfoBindingSource

الملفات في المرفقات

اتمنى ان يفيدكم المثالSmile

ولا تنسونا و والدي بالدعاء


الملفات المرفقة
.rar   ReportFromObject_C#.rar (الحجم : 51.87 ك ب / التحميلات : 74)
.rar   ReportFromObject_VB.rar (الحجم : 67.36 ك ب / التحميلات : 141)
الرد }}}
تم الشكر بواسطة:
#2
واضح تماما تمكنك فى هذه الأداة
بارك الله فيك
رزقك الله الفردوس الأعلى ووالديك أمين
الرد }}}
تم الشكر بواسطة: Sajad
#3
السلام عليكم

بارك الله فيك

آمين شكرا على الكلام الجميل والطيبSmile
الرد }}}
تم الشكر بواسطة:
#4
Good man . . .. . . .. . . ... .....
الرد }}}
تم الشكر بواسطة: Sajad , Sajad
#5
(02-05-13, 08:57 PM)Sajad كتب :
بسم الله الرحمن الرحيم

وصلى الله على محمد وآله الطاهرين

السلام عليكم ورحمة الله وبركاته



سنقوم في هذا الموضوع ببناء برنامج يقوم بطباعة تقرير من خلال فئة ( أي ان مصدر البيانات ستكون Object )

اولا سنقوم ببناء Class اسمه StudentsInfo من خلال Project--->AddClass بالشكل التالي:

C#

PHP كود :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 
ReportFromObject
{
 
   public class StudentsInfo
    
{
 
       // تسلس الطالب
 
       public int S_ID
        
setget; }
 
       // اسم الطالب
 
       public string S_FName
        
setget; }
 
       // تاريخ ولادة الطالب
 
       public DateTime S_BDate
        
setget; }
 
       // عنوان الطالب
 
       public string S_Address
        
setget; }
 
   }




VB

PHP كود :
Public Class StudentsInfo

    
' تسلس الطالب
    Public Property S_ID() As Integer
        Get
            Return m_S_ID
        End Get
        Set(value As Integer)
            m_S_ID = value
        End Set
    End Property
    Private m_S_ID As Integer
    ' 
اسم الطالب
    Public Property S_FName
() As String
        Get
            Return m_S_FName
        End Get
        Set
(value As String)
 
           m_S_FName value
        End Set
    End Property
    Private m_S_FName 
As String
    
' تاريخ ولادة الطالب
    Public Property S_BDate() As DateTime
        Get
            Return m_S_BDate
        End Get
        Set(value As DateTime)
            m_S_BDate = value
        End Set
    End Property
    Private m_S_BDate As DateTime
    ' 
عنوان الطالب
    Public Property S_Address
() As String
        Get
            Return m_S_Address
        End Get
        Set
(value As String)
 
           m_S_Address value
        End Set
    End Property
    Private m_S_Address 
As String

End 
Class 



ثانيا المتغيرات العامة:

C#


PHP كود :
private List<StudentsInfostd = new List<StudentsInfo>();
 
       private int id 1;

 
       public Form1()
 
       {
 
           InitializeComponent();

 
           id_txt.Text id.ToString();
 
       



VB

PHP كود :
Private std As New List(Of StudentsInfo)()
 
   Private id As Integer 1

    Sub 
New()

 
       ' This call is required by the designer.
        InitializeComponent()

        id_txt.Text = id.ToString()

        ' 
Add any initialization after the InitializeComponent() call.

 
   End Sub 


ثالثا: اضافة معلومات الطالب الى القائمة نكتبها في زر الاضافة:

C#

PHP كود :
std.Add(new StudentsInfo
                            
{
 
                               S_ID id,
 
                               S_FName name_txt.Text,
 
                               S_Address addr_txt.Text,
 
                               S_BDate DateTime.Parse(dob_txt.Text)
 
                           });

 
           id_txt.Text = (++id).ToString();

 
           name_txt.Text dob_txt.Text addr_txt.Text ""



VB

PHP كود :
 std.Add(New StudentsInfo() With _
    
.S_ID id_
    
.S_FName name_txt.Text_
    
.S_Address addr_txt.Text_
    
.S_BDate DateTime.Parse(dob_txt.Text_
   
})
 
       id id 1

        id_txt
.Text id

        name_txt
.Text ""
 
       addr_txt.Text ""
 
       dob_txt.Text " " 


رابعا: اضف نموذج جديد باسم ReportForm ومن ثم اضف أداة ReportViewer الى النموذج ومن Design a new report ستظر الشكل التالي:



نختار Object لتكون مصدرا للبيانات

ثم نختار الفئة التي انشأناها كما في الشكل التالي



ثم Next



ثم نسحب الحقول كما في الصورة



ثم Next وأزل التحديد من الChecks Box ثم finish

وغير شكل التقرير الى الذي تريد

الان من أداة الReportViewer اختر التقرير ستلاحظ ان أداة اخرى اضيفت بشكل تلقائي الى النموذج باسم StudentsInfoBindingSource و وظيفة هذه الاداة هي اسناد مصدر البيانات اليها

اجعل خاصية الModifire للأداة ولReportViewer يساوي Public

وكتب الكود التالي في زر الطباعة:

C#

PHP كود :
//std.Sort((x, y) => (x.S_FName.CompareTo(y.S_FName)));
 
           //or 
 
           std.OrderBy(name => name.S_FName);

 
           ReportForm repf = new ReportForm();
 
           repf.StudentsInfoBindingSource.DataSource std;
 
           repf.reportViewer1.RefreshReport();
 
           repf.Show(); 



VB

PHP كود :
'std.Sort(Function(x, y) (x.S_FName.CompareTo(y.S_FName)))
        '
or 
 
       std.OrderBy(Function(namename.S_FName)

 
       Dim repf As New ReportForm()
 
       repf.StudentsInfoBindingSource.DataSource std
        repf
.reportViewer1.RefreshReport()
 
       repf.Show() 



كما تلاحظون قمنا باستخدام تقنية Linq لترتيب القائمة حسب الاسم ومن ثم اسناد القائمة الى StudentsInfoBindingSource

الملفات في المرفقات

اتمنى ان يفيدكم المثالSmile

ولا تنسونا و والدي بالدعاء

طريقة فعالة صممت بها عدة تقارير سابقا  جزاك الله خيرا
                                                        Heart سبحان الله والحمد لله ولا اله الا الله والله اكبر  Heart
الرد }}}
تم الشكر بواسطة: Sajad , Sajad



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم