تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
طباعة الـ DataGridView وخاصية الطباعة للصفوف المحددة فقط !
#1
lo2i

[SIZE="4"][COLOR="DarkGreen"]السلام عليكم ورحمة الله وبركاته ,,

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

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

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

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

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

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

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



اسم الجدول persons
حقول الجدول
[COLOR="DarkOrange"]p_name
p_age
p_job
p_car
p_lang[/COLOR]

[COLOR="Indigo"]بعد ان قمنا بإنشاء قاعدة البيانات سوف ننتقل الان للبرمجة

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

نضع هذه الاداوات على الفورم الأول[/COLOR]



ومن ثم نقوم بإضافة الفورم الثاني ...
[COLOR="Purple"]
ونضع فيه الـ crystal report viewer[/COLOR]

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

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

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










نقوم بفتح الشاشة الأولى (form1)
وفي قسم الـ general نعرف المتغيرات التالية ...
PHP كود :
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 للـشاشة

نقوم بكتابة الكود التالي
PHP كود :
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
قم بإضافته ليعمل الكود بكفاءة .
PHP كود :
Sub add()
        
Dim field As New DataGridViewCheckBoxColumn
        field
.HeaderText "اختر للطباعة"
        
DataGridView1.Columns.Insert(5field)
    
End Sub 

ثم نقوم بالذهاب إلى الشاشة الثانية (form2)
لكتابة دالة تتلقى البيانات من ال dataset لعرضها في التقرير ...
نقوم بكتابة هذه الدالة
PHP كود :
Public Function print(ByVal ds As DataSetByVal 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)

ونكتب هذا الكود في زر (طباعة الكل)
PHP كود :
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 
[COLOR="DarkOrange"]
ومن ثم نقوم بفتح زر ال (طباعة المحدد) ونكتب فيه الكود التالي ..[/COLOR]

PHP كود :
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 0 To DataGridView1.Rows.Count 1
                
If DataGridView1.Item(5i).Value True Then
                    dr 
dt.Rows.Add
                    dr
.Item("p_name") = DataGridView1.Item(0i).Value.ToString
                    dr
.Item("p_age") = DataGridView1.Item(1i).Value.ToString
                    dr
.Item("p_job") = DataGridView1.Item(2i).Value.ToString
                    dr
.Item("p_car") = DataGridView1.Item(3i).Value.ToString
                    dr
.Item("p_lang") = DataGridView1.Item(4i).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 

لكي يعمل الكود بنجاح يجب عليك إضافة الإجرائين التاليين
الاجراء الاول
PHP كود :
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 
[COLOR="Blue"]
والاجراء الثاني
[/COLOR]

PHP كود :
Sub removecheck()
        For 
0 To DataGridView1.Rows.Count 1
            DataGridView1
.Item(5i).Value False
        Next
    End Sub 
وبعد تشغيل البرنامج يمكنك إختيار الصفوف التي تريد طباعتها

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



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



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

[COLOR="Red"]المشروع ككل موجود في المرفقات

آمل من الله ان لا تنسوني من دعائكم

والسلام عليكم ورحمة الله وبركاته[/COLOR] [/COLOR][/SIZE]
[ATTACH]167[/ATTACH]


الملفات المرفقة
.rar   windows-1256''WindowsApplication1.rar (الحجم : 108.19 ك ب / التحميلات : 230)
الرد }}}}
تم الشكر بواسطة:
#2
[COLOR="#0000CD"]مرحبا اخي MR Dev Boody

وشكرا لك على هالمثال الجميل والرائع

وشكرا للأستاذ لؤي مصمم المشاركة

ولي استفسار بسيط

كيف يمكنني تحديد الكل بكبسة زر

مثلا يعني كيف اعمل زر تحديد الكل

وكل الشكر لك اخي على هالمشاركة القيمة[/COLOR]
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  طريقة تقسيم كمية عرض البيانات داخل الأداة ( DataGridView ) أو مايسمى بالـ ( Paging ) MR Dev Boody 4 1,996 02-06-16, 12:41 PM
آخر رد: CLARO

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


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