تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
[مقال] كيفية التعامل مع XtraReport
#1
بسم الله الرحمن الرحيم
الصلاة و السلام على أشرف خلق الله سيدنا محمد و على آله و صحبه و سلم


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

أحببت اليوم أن أقوم بطرح موضوع حول "كيفية التعامل مع تقارير XtraReport" التي أعتبرها أكثر من رائعة لتميزها بخصائص جميلة جداً ....

نبدأ على بركة الله:

في البداية نقوم بتصميم قاعدة البيانات كما في الصور الموضحة أدناه:

[صورة مرفقة: 975a9de68e689bb.jpg]

[صورة مرفقة: a3046854e1ccb0c.jpg]

[صورة مرفقة: ce8f6ba7de8efe0.gif]

بعد أن قمنا بالانتهاء من عمل قاعدة البيانات, نقوم بفتح مشروع جديد من خلال VS و ذلك بالضغط على (New Project).

نقوم بغلق هذه الواجهة (Form1) و من ثم نقوم بعمل التالي:
[صورة مرفقة: 964cae575a9c03a.jpg]

نقوم بعمل (Delete) لهذه الواجهة كما هو موضح بالصورة أعلاه.

نقوم بالتالي:
[صورة مرفقة: 8e0be18f2861f29.jpg]

شرح الصورة:
1- نقوم بإختيار (Windows Forms).
2- نكتب إسم الواجهة (RepViewerFrm).
3- نضغط على (Add).
4- بعد أن تظهر لنا الواجهة (Form) الجديدة (RepViewerFrm), نقوم بإضافة بعض الأدوات:
- نقوم بإضافة (PrintBarManager) عدد (1).
- نقوم بإضافة (PrintControl) عدد (1).
نقوم بتغيير بعض الخصائص الخاصة بالواجهة (Form) و الادوات الموجودة عليها لنصل إلى التالي:
[صورة مرفقة: fb1641985361d7d.jpg]

بعدها نقوم بإضافة موديل (Module) لتظهر لنا الواجهة التالية:
[صورة مرفقة: 2d4b10122bcf2ae.jpg]

شرح الصورة:
1- نقوم بإختيار (Module) و نكتب إسمه (ConProAndFun).
2- نضغط على (Add).

بعد أن قمنا بإضافة كل ما يلزمنا من واجهات (Forms) و موديل (Module), نقوم الأن بإضافة التقرير.

نقوم بعمل تقرير بسيط و هو لتعلم كيفية التعامل مع تقارير (XtraReport) من خلال الفيجوال بيسك.

نقوم بإضافة عنصر جديد إلى المشروع و ستظهر لنا الواجهة التالية:
[صورة مرفقة: 425cd6ea014d609.jpg]

شرح الصورة:
1- نقوم بفتح شجرة (Installed) و من ثم (Common Items).
2- نختار (DevExpress).
3- نضغط على (DXperience v12.2 Report Class).
4- نكتب إسم التقرير (MasterDetailRep.vb).
5- نضغط على (Add).
بعدها سيظهر لنا الموضح أدناه:
[صورة مرفقة: d760812cc717f0f.jpg]

بعدها نقوم بعدة تعديلات و إضافة بعد الأداوت من الـ (Toolbox) إلى التقرير و هي:
1- نقوم بإضافة (xrLabel) عدد (3).
2- نقوم بإضافة (xrLine) عدد (5).
3- نقوم بإضافة (xrPageInfo) عدد (2).
4- نقوم بإضافة (xrTable) عدد (2).
5- نقوم بإضافة (xrTableCell) عدد (10).
6- نقوم بإضافة (xrTableRow) عدد (2).
نقوم بتغيير بعض الخصائص الخاصة بالواجهة (Form) و الادوات الموجودة عليها لنصل إلى التالي:
[صورة مرفقة: 1f4cd05c74aec92.jpg]

بعد أن قمنا بإضافة التقرير ... سنقوم الأن بكتابة الكود التالي في الواجهة (Form) المسماة بـ (RepViewerFrm) و الكود هو:

كود :
Imports System
Imports System.Windows.Forms
Imports DevExpress.LookAndFeel
Imports DevExpress.XtraReports.UI
Imports DevExpress.XtraPrinting
Imports DevExpress.XtraPrinting.Preview

Public Class RepViewerFrm

    Private Sub RepViewerFrm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim rprt As XtraReport = masterdetailreport1()
        Dim report As New MasterDetailRep
        report.Pages.AddRange(rprt.Pages)
        PrintControl1.PrintingSystem = report.PrintingSystem
    End Sub
End Class
و من ثم نقوم بإضافة الإجراءات التالية إلى الموديل (Module) المسمى بـ (ConProAndFun) و كود الإجراءات هو:

كود :
Imports System
Imports System.Drawing
Imports System.Windows.Forms
Imports DevExpress.XtraReports
Imports DevExpress.XtraReports.UI
Imports DevExpress.XtraPrinting
Imports System.Data.OleDb
Imports System.Data

Module ConProAndFun
    Public Cn As New OleDbConnection("Provider=MicrosoftCJetCOLEDBC4C0;Data Source=" & ApplicationCStartupPath & "\XtraReportCmdb;OLE DB Services=-1")
Public Function masterdetailreport1() As XtraReport
'=============================================================
Dim DA1 As New OleDbDataAdapter("SELECT ID, CategoryName, CategoryNotes FROM Category_Table", Cn)
'=============================================================
Dim DA2 As New OleDbDataAdapter("SELECT ID, ProductCategory, ProductName, ProductUnit, ProductQuantity, ProductPrice, ProductNotes  FROM Product_Table", Cn)
'=============================================================
Dim fDS As New DataSet
fDS.Clear()
'=============================================================
DA1.Fill(fDS, "HeaderTbl")
DA2.Fill(fDS, "DetailTbl")
'=============================================================
Dim RelShp As New DataRelation("HeadDetailID", fDS.Tables("HeaderTbl").Columns("ID"), fDS.Tables("DetailTbl").Columns("ProductCategory"), True)fDS.Relations.Add(RelShp)
'=============================================================
        Dim report As New MasterDetailRep
        report.DataSource = fDS
        report.DataAdapter = DA1
'=============================================================
        ' Create the Group Header of the Report
        Dim bead As New GroupHeaderBand
        report.Bands.Add(bead)
        Dim gfield As New GroupField("ID")
        bead.GroupFields.Add(gfield)
        ' Assign the Group Header to the Data
        report.XrLabel8.DataBindings.Add("Text", Nothing, "CategoryName")
'=============================================================
        report.DetailReport.DataSource = fDS
        report.DetailReport.DataMember = "HeadDetailID"
        report.DetailReport.DataAdapter = DA2
'=============================================================
        report.XrTableCell22.DataBindings.Add("Text", Nothing, "HeadDetailID.ProductName")
        report.XrTableCell23.DataBindings.Add("Text", Nothing, "HeadDetailID.ProductUnit")
        report.XrTableCell24.DataBindings.Add("Text", Nothing, "HeadDetailID.ProductQuantity")
        report.XrTableCell25.DataBindings.Add("Text", Nothing, "HeadDetailID.ProductPrice")
        report.XrTableCell26.DataBindings.Add("Text", Nothing, "HeadDetailID.ProductNotes")
'=============================================================
        report.CreateDocument()
        DA1.Dispose()
        DA2.Dispose()
        fDS.Dispose()
        Cn.Close()
        Return report
    End Function


إلى هنا ننتهي من هذه المقالة بحمد الله و شكره و الصلاة و السلام على النبي سيدنا محمد و على آله و صحبه و سلم.
لا أسألكم غير الدعاء لي و لأهلي بالخير ....
أرجوا أن يكون هذا العمل خالصاً لوجه الله تعالى .. و أرجوا أن تستفيدوا منه ....


تحياتي
الرد }}}
تم الشكر بواسطة: سعود , Sajad , Abu Ehab , abulayth , surgam , WAEL ABED
#2
السلام عليكم

جزاكم الله خيرا

بارك الله فيك

تحياتي
الرد }}}
تم الشكر بواسطة: hoob computer
#3
(10-11-13, 09:40 PM)Sajad كتب : السلام عليكم

جزاكم الله خيرا

بارك الله فيك

تحياتي

و جزاك الله خيراً أيضاً و بارك فيك ...

تحياتي
الرد }}}
تم الشكر بواسطة:
#4
V.Good
Abu Ehab : Microsoft Partner  & Systems Developer
 Youtube   Facebook    Twitter   
الرد }}}
تم الشكر بواسطة: hoob computer
#5
شكراً أخوي ابو ايهاب ... إشادتك للمثال أعتز بها جداً Smile

صح أن التقنية المستخدمة هي (ADO.Net) و ليست (LINQ) و لكنني في طور تعلمها إن شاء الله Smile



تحياتي
الرد }}}
تم الشكر بواسطة: Abu Ehab
#6
وأنا سعيد جدا بمستواك . أنا شايف أنك خامة جيده ..
حاول تتعلم Microsoft Reports لأنها خفيفة ولطيفة .
وعلى فكرة :
أنا بتابعكم كل فترة وفترة ... لعل وعسى أختار أحدكم للعمل معنا .

وحاول تترك الأكسس ... لأنها صـــــــــارت في الباي باي ...
Abu Ehab : Microsoft Partner  & Systems Developer
 Youtube   Facebook    Twitter   
الرد }}}
تم الشكر بواسطة: hoob computer
#7
(12-11-13, 12:01 PM)Abu Ehab كتب : وأنا سعيد جدا بمستواك . أنا شايف أنك خامة جيده ..
حاول تتعلم Microsoft Reports لأنها خفيفة ولطيفة .
وعلى فكرة :
أنا بتابعكم كل فترة وفترة ... لعل وعسى أختار أحدكم للعمل معنا .

وحاول تترك الأكسس ... لأنها صـــــــــارت في الباي باي ...

شكراً على تشجيعك لنا يا أبو إيهاب ... و إن شاء الله بحاول أتعلم Microsoft Reports و ححاول ادقق مثالك LINQ To SQL N-Tier with Microsoft Reports و أشوف كيفية العمل فيه و شو مميزاته و أتعلم منه و أطبق أمثلة في بالي Smile إن شاء الله.

بالنسبة لإختيار أحدنا للعمل معكم, فهذا شرف لأي عضو من الأعضاء أن يعمل معكم و هنالك أعضاء في المنتدى ما شاء الله و لا قوة الا بالله عباقرة في المنتدى ... و أتشرف بالعمل معكم Smile
"الله يوفقكم لكل ما فيه خيرٌ لكم".

أما بالنسبة للأكسس, الصراحة لدي بعض الأسئلة التي تحوم في بالي حوله و لماذا لا نستعمله في الأنظمة الصغيرة مثل (إدارة محل, نظام مبيعات و مشتريات, نظام إدارة المخزن) و هكذا أنظمة.
و بالنسبة إلى إستخدام الـ SQL بداله, فلدي بعض الأسئلة ايضا حولها وفي حال قمنا بوضعها على Sever و البرنامج على Client و كان مشروعنا N-Tier فكيف سنقوم بعمل Deploy للمشروع و هكذا أسئلة و إن شاء الله سأرتب أفكاري و أقوم بقراءة ما أريده و إن لم أجد ما أريده سأطرحه هنا في المنتدى كسؤال ... و الله الموفق.


تحياتي
الرد }}}
تم الشكر بواسطة:
#8
Abu Ehab : Microsoft Partner  & Systems Developer
 Youtube   Facebook    Twitter   
الرد }}}
تم الشكر بواسطة: hoob computer , Sajad
#9
و عليكم السلام أخوي الغالي أبو إيهاب, شو هالغيبة؟

عساك بخير انت و الشباب الي معاك ...

جزاك الله خيراً على شرحك و توضيحك Smile


السلام عليكم
الرد }}}
تم الشكر بواسطة:
#10
سلام عليكم عندي سؤال ياريت تساعدني اريد اتواصل معاك اذا عندك حساب تلي غرام او فيس بوك
الرد }}}
تم الشكر بواسطة:



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


يقوم بقرائة الموضوع: