طباعة الـ DataGridView وخاصية الطباعة للصفوف المحددة فقط !

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

طباعة الـ DataGridView وخاصية الطباعة للصفوف المحددة فقط !

مُساهمة من طرف المبرمج الطموح في الأحد يوليو 14, 2013 7:16 am

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

إخواني أعضاء منتدى فيجوال بيسك للعرب .. ارجو ان تكون بكل صحة وعافية

درسنا لليوم عن كيفية إتاحة خدمة الطباعة المحددة للصفوف الموجودة في الـ DataGriView

مع كيفية إرسال البيانات الموجودة بدالخه للتقرير عن تقرير كتابة اسهل شيفرة لذلك ...

سنعمل على قاعدة بيانات أكسيس لتسهيل العملية وتسهيل تشغيلها على أكثر الاجهزة .

بداية سنقوم بإنشاء قاعدة البيانات التي سوف نتعامل معها ..

وسيكون بداخلها جدولاً واحداً فقط ... وهو يحوي أسماء بعض الأشخاص وبعض معلوماتهم ...

وستكون تركيبة الجدول على الشكل التالي ..



اسم الجدول persons
حقول الجدول
p_name
p_age
p_job
p_car
p_lang


بعد ان قمنا بإنشاء قاعدة البيانات سوف ننتقل الان للبرمجة

وبعد فتح البرنامج , واختيار الـ windows application

نضع هذه الاداوات على الفورم الأول




ومن ثم نقوم بإضافة الفورم الثاني ...

ونضع فيه الـ crystal report viewer


كما هو ظاهر في هذه الصورة ..

ومن ثم نقوم بإضافة الكريستال ريبورت

للمشروع من خلال هذه الخطوات










نقوم بفتح الشاشة الأولى (form1)
وفي قسم الـ general نعرف المتغيرات التالية ...


الرمز:
 Public con As New OleDbConnection("provider=microsoft.jet.oledb.4.0; data source = " & Application.StartupPath & "\data.mdb")

    Public ds As New DataSet

    Public dt As New DataTable 


وفي حدث الفورم لود form_load للـشاشة

نقوم بكتابة الكود التالي



الرمز:
 Try

            Dim data As New OleDbDataAdapter("select * from persons", con)

            ds.Clear()

            con.Open()

            data.Fill(ds, "ppp")

            con.Close()

            DataGridView1.DataSource = ds.Tables("ppp")

            add()

        Catch ex As Exception

            MsgBox(ex.Message)

        Finally

            con.Close()

        End Try  

كما ترى في الكود قمنا بإستدعاء حدث بإسم add
قم بإضافته ليعمل الكود بكفاءة



الرمز:
 Sub add()

        Dim field As New DataGridViewCheckBoxColumn

        field.HeaderText = "اختر للطباعة"

        DataGridView1.Columns.Insert(5, field)

    End Sub 


 ثم نقوم بالذهاب إلى الشاشة الثانية (form2)
لكتابة دالة تتلقى البيانات من ال dataset لعرضها في التقرير ...
نقوم بكتابة هذه الدالة


الرمز:
Public Function print(ByVal ds As DataSet, ByVal tb As String)

        Dim e1 As New CrystalReport1

        e1.SetDataSource(ds.Tables(tb))

        CrystalReportViewer1.ReportSource = e1

        Me.CrystalReportViewer1.RefreshReport()

        Return Nothing

    End Function 

هذه الدالة سوف تساعدنا في إرسال البيانات الموجودة في الـ dataset إلى التقرير لتعرضها فيه .

نعود للشاشة الأولى (form1)

ونكتب هذا الكود في زر (طباعة الكل)


الرمز:
Try

            Me.Cursor = Cursors.WaitCursor

            Dim x As New Form2

            x.print(ds, "ppp")

            x.Show()

            Me.Cursor = Cursors.Default

        Catch ex As Exception

            MsgBox(ex.Message)

        End Try 

ومن ثم نقوم بفتح زر ال (طباعة المحدد) ونكتب فيه الكود التالي ..



الرمز:
 Try

            Me.Cursor = Cursors.WaitCursor

            dt = New DataTable

            dt.TableName = "sss"

            dt.Columns.Clear()

            add2()

            Dim count As Integer = 0

            Dim dr As DataRow

            For i = 0 To DataGridView1.Rows.Count - 1

                If DataGridView1.Item(5, i).Value = True Then

                    dr = dt.Rows.Add

                    dr.Item("p_name") = DataGridView1.Item(0, i).Value.ToString

                    dr.Item("p_age") = DataGridView1.Item(1, i).Value.ToString

                    dr.Item("p_job") = DataGridView1.Item(2, i).Value.ToString

                    dr.Item("p_car") = DataGridView1.Item(3, i).Value.ToString

                    dr.Item("p_lang") = DataGridView1.Item(4, i).Value.ToString

                    count += 1

                End If

            Next

            If count = 0 Then

                MsgBox("لم تقم بإختيار أي عنصر للطباعة", MsgBoxStyle.Exclamation)

                Exit Sub

            End If

            Dim dss As New DataSet

            dss.Clear()

            dss.Tables.Add(dt)

            Dim r As New Form2

            r.print(dss, "sss")

            removecheck()

            r.Show()

        Catch ex As Exception

            MsgBox(ex.Message)

        Finally

            Me.Cursor = Cursors.Default

        End Try 

لكي يعمل الكود بنجاح يجب عليك إضافة الإجرائين التاليين
الاجراء الاول


الرمز:
Sub add2()

        Dim Name As DataColumn = New DataColumn("p_name")

        Name.DataType = System.Type.GetType("System.String")

        dt.Columns.Add(Name)

        Dim age As DataColumn = New DataColumn("p_age")

        age.DataType = System.Type.GetType("System.String")

        dt.Columns.Add(age)

        Dim job As DataColumn = New DataColumn("p_job")

        job.DataType = System.Type.GetType("System.String")

        dt.Columns.Add(job)

        Dim car As DataColumn = New DataColumn("p_car")

        car.DataType = System.Type.GetType("System.String")

        dt.Columns.Add(car)

        Dim lang As DataColumn = New DataColumn("p_lang")

        lang.DataType = System.Type.GetType("System.String")

        dt.Columns.Add(lang)

    End Sub 

والاجراء الثاني


الرمز:
Sub removecheck()

        For i = 0 To DataGridView1.Rows.Count - 1

            DataGridView1.Item(5, i).Value = False

        Next

    End Sub 

وبعد تشغيل البرنامج يمكنك إختيار الصفوف التي تريد طباعتها

هذه الصورة تبين عند تشغيل زر (طباعة الكل) سوف يطبع لك جميع الصفوف الظاهرة في الـ datagridvew



وهذه الصورة تبين عند اختيار السجلات التي تريد طباعتها السجلات التي قمت بإختيارها لتقوم بطباعتها .



كان هذا درساً بسيطاً لكيفية تحديد الصفوف المراد طباعتها في التقرير



مصدر المقال هنا

المبرمج الطموح
الاشراف
الاشراف

تاريخ التسجيل : 18/02/2011
المساهمات : 117
النقاط : 213
التقيم : 6
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: طباعة الـ DataGridView وخاصية الطباعة للصفوف المحددة فقط !

مُساهمة من طرف issatiger2050 في السبت يوليو 26, 2014 2:20 pm


issatiger2050
..
..

تاريخ التسجيل : 17/07/2014
المساهمات : 13
النقاط : 13
التقيم : 0
الدولة : ليبيا
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى