10-11-13, 01:51 PM
بسم الله الرحمن الرحيم
الصلاة و السلام على أشرف خلق الله سيدنا محمد و على آله و صحبه و سلم
السلام عليكم و رحمة الله و بركاته,
أحببت اليوم أن أقوم بطرح موضوع حول "كيفية التعامل مع تقارير XtraReport" التي أعتبرها أكثر من رائعة لتميزها بخصائص جميلة جداً ....
نبدأ على بركة الله:
في البداية نقوم بتصميم قاعدة البيانات كما في الصور الموضحة أدناه:
بعد أن قمنا بالانتهاء من عمل قاعدة البيانات, نقوم بفتح مشروع جديد من خلال VS و ذلك بالضغط على (New Project).
نقوم بغلق هذه الواجهة (Form1) و من ثم نقوم بعمل التالي:
نقوم بعمل (Delete) لهذه الواجهة كما هو موضح بالصورة أعلاه.
نقوم بالتالي:
شرح الصورة:
1- نقوم بإختيار (Windows Forms).
2- نكتب إسم الواجهة (RepViewerFrm).
3- نضغط على (Add).
4- بعد أن تظهر لنا الواجهة (Form) الجديدة (RepViewerFrm), نقوم بإضافة بعض الأدوات:
- نقوم بإضافة (PrintBarManager) عدد (1).
- نقوم بإضافة (PrintControl) عدد (1).
نقوم بتغيير بعض الخصائص الخاصة بالواجهة (Form) و الادوات الموجودة عليها لنصل إلى التالي:
بعدها نقوم بإضافة موديل (Module) لتظهر لنا الواجهة التالية:
شرح الصورة:
1- نقوم بإختيار (Module) و نكتب إسمه (ConProAndFun).
2- نضغط على (Add).
بعد أن قمنا بإضافة كل ما يلزمنا من واجهات (Forms) و موديل (Module), نقوم الأن بإضافة التقرير.
نقوم بعمل تقرير بسيط و هو لتعلم كيفية التعامل مع تقارير (XtraReport) من خلال الفيجوال بيسك.
نقوم بإضافة عنصر جديد إلى المشروع و ستظهر لنا الواجهة التالية:
شرح الصورة:
1- نقوم بفتح شجرة (Installed) و من ثم (Common Items).
2- نختار (DevExpress).
3- نضغط على (DXperience v12.2 Report Class).
4- نكتب إسم التقرير (MasterDetailRep.vb).
5- نضغط على (Add).
بعدها سيظهر لنا الموضح أدناه:
بعدها نقوم بعدة تعديلات و إضافة بعد الأداوت من الـ (Toolbox) إلى التقرير و هي:
1- نقوم بإضافة (xrLabel) عدد (3).
2- نقوم بإضافة (xrLine) عدد (5).
3- نقوم بإضافة (xrPageInfo) عدد (2).
4- نقوم بإضافة (xrTable) عدد (2).
5- نقوم بإضافة (xrTableCell) عدد (10).
6- نقوم بإضافة (xrTableRow) عدد (2).
نقوم بتغيير بعض الخصائص الخاصة بالواجهة (Form) و الادوات الموجودة عليها لنصل إلى التالي:
بعد أن قمنا بإضافة التقرير ... سنقوم الأن بكتابة الكود التالي في الواجهة (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
كود :
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
إلى هنا ننتهي من هذه المقالة بحمد الله و شكره و الصلاة و السلام على النبي سيدنا محمد و على آله و صحبه و سلم.
لا أسألكم غير الدعاء لي و لأهلي بالخير ....
أرجوا أن يكون هذا العمل خالصاً لوجه الله تعالى .. و أرجوا أن تستفيدوا منه ....
تحياتي