02-10-12, 05:02 PM
كاتب الموضوع : myprogs
مع الدرس الثانى سنحاول طباعة بيانات من داخل داتا جرد DataGridView تستقى بيناتها من قاعدة بيانات
سنقوم فى حدث load لـ Form1 بتعريف المتغيرات الاتية اللازمة لعملية الاتصال بقاعدة البيانات
تعريف اتصال
Dim my_con As New OleDb.OleDbConnection
تعريف كوماند
Dim my_com As New OleDb.OleDbCommand
تعريف ادابتور
Dim my_adp As New OleDb.OleDbDataAdapter
تعريف داتا ست
Dim my_ds As New DataSet
اسحب اداة DataGridView وسمها Dta_data
وسوف نستخدم button لجلب البيانات من قاعدة البيانات ونسميه btn_import_data وفى حدث click نضع الكود التالى
Try
(" my_ds.Tables.Remove("emp
Catch ex As Exception
End Try
btn_prev.Enabled = True
my_com.Connection = my_con
" my_com.CommandText = "select * from employee
my_adp.Fill(my_ds, "emp")
(" dta_data.DataSource = my_ds.Tables("emp
ثم اسحب اداة PintDocument وسمها Print_Doc وهى الاداة المسئولة عن الطباعة وفى حدث Print_page الخاص بها اكتب الاكواد التالية(" my_ds.Tables.Remove("emp
Catch ex As Exception
End Try
btn_prev.Enabled = True
my_com.Connection = my_con
" my_com.CommandText = "select * from employee
my_adp.Fill(my_ds, "emp")
(" dta_data.DataSource = my_ds.Tables("emp
'رقم 17.5 يمثل العرض بالسم و10 تحويله الى مليمتر و3.94 يمثل تحويل الملمتر الى طيقة قياس الشاشة
Dim wdth_lin As Single = 17.5 * 10 * 3.94
Dim hght_lin As Single = 26 * 10 * 3.94
Dim hght_lin As Single = 26 * 10 * 3.94
'تحديد الهامش الشمال
Dim lft As Single = ((e.PageBounds.Width - wdth_lin) / 2) / 3.94
Dim tp As Single = 4 * 10
'تغييير قياس الصفحة الى مليمترDim tp As Single = 4 * 10
e.Graphics.PageUnit = GraphicsUnit.Millimeter
Dim strt As Single = 0
'عرض الجدول الكلى عبارة عن 5 اعمدة × 3.5 سم باجمالى 17.5 سمDim strt As Single = 0
Dim wdth As Single = 17.5 * 10
'ارتفاع الجدول عبارة عن عدد صفوف الداتا جرد × 1 سم
Dim hght As Single = dta_data.RowCount * 10
'تغيير سمك الرسم لحدود الجدول
Dim pns As New Pen(Color.Black, 0.75)
'رسم الحدود الرئيسية للجدول
e.Graphics.DrawRectangle(pns, lft, tp, wdth, hght)
pns.Width = 0.25
'رسم الخطوط الرأسية للجدول من خلال حلقة تكرارية بحيث يكون عرض العمود 3.5 سمpns.Width = 0.25
For ii As Integer = 1 To dta_data.ColumnCount
'زيادة الاذاحة اليسرى بمقدار 3.5 سم وهى قيمة عرض العمود
strt = strt + 3.5 * 10
e.Graphics.DrawLine(pns, lft + strt, tp, lft + strt, tp + hght)
Next
'زيادة الاذاحة الرأسية بمقدار 4 سم - قيمة الفراغ العلوى بالاضافة الى 1 سم لتحديد قيمة الصف الاول ليكون اجمالى الاذاحة 5 سمe.Graphics.DrawLine(pns, lft + strt, tp, lft + strt, tp + hght)
Next
Dim er As Single = 5 * 10
' رسم الخطوط الافقية للجدول من خلال حلقة تكرارية
For ii As Integer = 1 To dta_data.RowCount
e.Graphics.DrawLine(pns, lft, er, lft + wdth, er)
'زيادة الاذاحة الرأسية بمقدار 1 سم - اضافة صفe.Graphics.DrawLine(pns, lft, er, lft + wdth, er)
er = er + 1 * 10
Next
'تعريف متغير يمثل التنسيق النصى وضبط المحاذاة الى وسط ومنتصف
Dim strfrmt As New StringFormat(0, 1)
strfrmt.Alignment = StringAlignment.Center
strfrmt.LineAlignment = StringAlignment.Center
'تحويل لغة الارقام الى العربيةstrfrmt.Alignment = StringAlignment.Center
strfrmt.LineAlignment = StringAlignment.Center
strfrmt.SetDigitSubstitution(1, StringDigitSubstitute.Traditional)
'تعريف نوعى خط لاستخدامهما فى الطباعة
Dim fnt1 As New Font("Times New Roman", 3.5, FontStyle.Bold, GraphicsUnit.Millimeter)
Dim fnt2 As New Font("Mudir MT", 6, FontStyle.Bold, GraphicsUnit.Millimeter)
Dim txt As String
'بداية(الحلقة)Dim fnt2 As New Font("Mudir MT", 6, FontStyle.Bold, GraphicsUnit.Millimeter)
Dim txt As String
'ضبط الاذاحة الرأسية الى 4 سم + نصف سم يمثل منتصف الصف رأسيا
er = 4.5 * 10
'حلقة لقراءة بيانات صفوف الداتا
For i As Integer = 0 To dta_data.RowCount - 1
'جعل الاذاحة اليسرى تبدأ من منتص عرض العمود 3.5 ÷ 2 عند الانتقال الى صف جديد
strt = 1.75 * 10
'حلقة لقراءة محتويات اعمدة الداتا من الاخر الى الاول
For ii As Integer = dta_data.ColumnCount - 1 To 0 Step -1
txt = dta_data.Item(ii, i).Value.ToString
e.Graphics.DrawString(txt, fnt1, Brushes.Black, lft + strt, er, strfrmt)
'بعد قراءة بيانات كل عمود تتم الاذاحة بمقدار 3.5 سم استعدادا لطباعة العمود الذى يليهtxt = dta_data.Item(ii, i).Value.ToString
e.Graphics.DrawString(txt, fnt1, Brushes.Black, lft + strt, er, strfrmt)
strt = strt + 3.5 * 10
Next
'زيادة الاذاحة الرأسية بمقدار 1 سم - اضافة سطر Next
er = er + 1 * 10
Next
'طباعة العنوان الرئيسىNext
'لتوسيط العنوان الرئيسى قسمنا عرض الورقة 17.5 سم ÷ 2
strt = (17.5 * 10) / 2
'جعلنا الذاحة العلوية 2 سم
er = 2 * 10
txt = Label1.Text
e.Graphics.DrawString(txt, fnt2, Brushes.Black, lft + strt, er, strfrmt)
ثم اسحب اداة PrintPreviewDialog وهى الاداة المسئولة عن معاينة الطباعة وسمها Print_prev وغير خاصية Document لها الى Print_doc txt = Label1.Text
e.Graphics.DrawString(txt, fnt2, Brushes.Black, lft + strt, er, strfrmt)
ثم اسحب Button وسمه Btn_prev لمعاينة الطباعة واكتب فى حدث Click خاصته الكود التالى
prnt_prev.ShowDialog()
ثم اسحب Button وسمه Btn_print للطباعة واكتب فى حدث Click خاصته الكود التالى
prnt_doc.Print()