20-09-12, 03:30 AM
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 نعرف المتغيرات التالية ...
وفي حدث الفورم لود form_load للـشاشة
نقوم بكتابة الكود التالي
كما ترى في الكود قمنا بإستدعاء حدث بإسم add
قم بإضافته ليعمل الكود بكفاءة .
ثم نقوم بالذهاب إلى الشاشة الثانية (form2)
لكتابة دالة تتلقى البيانات من ال dataset لعرضها في التقرير ...
نقوم بكتابة هذه الدالة
هذه الدالة سوف تساعدنا في إرسال البيانات الموجودة في الـ dataset إلى التقرير لتعرضها فيه .
نعود للشاشة الأولى (form1)
ونكتب هذا الكود في زر (طباعة الكل)
[COLOR="DarkOrange"]
ومن ثم نقوم بفتح زر ال (طباعة المحدد) ونكتب فيه الكود التالي ..[/COLOR]
لكي يعمل الكود بنجاح يجب عليك إضافة الإجرائين التاليين
الاجراء الاول
[COLOR="Blue"]
والاجراء الثاني
[/COLOR]
وبعد تشغيل البرنامج يمكنك إختيار الصفوف التي تريد طباعتها
هذه الصورة تبين عند تشغيل زر (طباعة الكل) سوف يطبع لك جميع الصفوف الظاهرة في الـ datagridvew
وهذه الصورة تبين عند اختيار السجلات التي تريد طباعتها السجلات التي قمت بإختيارها لتقوم بطباعتها .
كان هذا درساً بسيطاً لكيفية تحديد الصفوف المراد طباعتها في التقرير
[COLOR="Red"]المشروع ككل موجود في المرفقات
آمل من الله ان لا تنسوني من دعائكم
والسلام عليكم ورحمة الله وبركاته[/COLOR] [/COLOR][/SIZE]
[ATTACH]167[/ATTACH]
إخواني أعضاء منتدى فيجوال بيسك للعرب .. ارجو ان تكون بكل صحة وعافية
درسنا لليوم عن كيفية إتاحة خدمة الطباعة المحددة للصفوف الموجودة في الـ 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(5, field)
End Sub
ثم نقوم بالذهاب إلى الشاشة الثانية (form2)
لكتابة دالة تتلقى البيانات من ال dataset لعرضها في التقرير ...
نقوم بكتابة هذه الدالة
PHP كود :
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)
ونكتب هذا الكود في زر (طباعة الكل)
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]
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 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
لكي يعمل الكود بنجاح يجب عليك إضافة الإجرائين التاليين
الاجراء الاول
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]
PHP كود :
Sub removecheck()
For i = 0 To DataGridView1.Rows.Count - 1
DataGridView1.Item(5, i).Value = False
Next
End Sub
هذه الصورة تبين عند تشغيل زر (طباعة الكل) سوف يطبع لك جميع الصفوف الظاهرة في الـ datagridvew
وهذه الصورة تبين عند اختيار السجلات التي تريد طباعتها السجلات التي قمت بإختيارها لتقوم بطباعتها .
كان هذا درساً بسيطاً لكيفية تحديد الصفوف المراد طباعتها في التقرير
[COLOR="Red"]المشروع ككل موجود في المرفقات
آمل من الله ان لا تنسوني من دعائكم
والسلام عليكم ورحمة الله وبركاته[/COLOR] [/COLOR][/SIZE]