![]() |
|
الدرس السابع والعشرون - مقدمة إلى التعامل مع التقارير من خلال DataReport - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : الأقسام التعليمية - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=90) +--- قسم : قسم دورات المنتدى (http://vb4arb.com/vb/forumdisplay.php?fid=113) +---- قسم : دورة بناء برنامج لإدارة السوبر ماركت من الألف إلى الياء (http://vb4arb.com/vb/forumdisplay.php?fid=128) +---- الموضوع : الدرس السابع والعشرون - مقدمة إلى التعامل مع التقارير من خلال DataReport (/showthread.php?tid=5715) |
الدرس السابع والعشرون - مقدمة إلى التعامل مع التقارير من خلال DataReport - RaggiTech - 15-10-12 [b]كاتب الموضوع : أحمد جمال
بسم الله الرحمن الرحيم .
[/b]السلام عليكم ورحمة الله وبركاته . ما هي الداتا ريبورت
DataReport ؟
هي إحدى نماذج العرض المرفقة افترضياً مع الفيجوال بيسك ، وهي مصممة لطباعة التقارير والجداول من قواعد البيانات ، وهي تستقبل جملة استعلام أو اسم جدول لكي تقوم بطباعته . وهناك نماذج أو أدوات أخرى في هذا المجال من أشهرها الكريستال ريبورت وهو أكثر احترافية من الداتا ريبورت ولكنه ليس موجود افتراضياً مع مكتبات فيجوال بيسك ، إذا كنت مهتماً بمعرفة المزيد عن الكريستال ريبورت فيمكنك استخدام هذا الرابط :
link
وسوف نتعرف في هذه الدروس على كيفية التعامل مع DataReport .
لنضيف
DataRreport فإننا ومن خلال النقر بزر الماوس الايمن على الفورم سوف تظهر لنا Add ، ونختار منها DataReport .
نلاحظ أن الصفحة التي ظهرت لنا مقسمة إلى خمسة اقسام :
Report Header
: البيانات التي تظهر فقط مع أول صفحة في التقرير .
Page Header
: البيانات التي تظهر على رأس كل صفحة .
Detailes
: محتويات التقرير ، ويمكن ان تعرض على اكثر من صفحة .
Page Footer
: ما يظهر مع كل آخر صفحة .
Report Footer
: بيانات تظهر في آخر صفحة في التقرير فقط .
والآن سوف تجد على يمين الشاشة مربع أدوات تحكم Control Box غير المعتاد في شاشات فيجوال بيسك التقليدية تحت تبويب Tab باسمDataReport ، وتحتوي على الأدوات التالية - من اليسار - :
Pointer
: وهو مؤشر السهم المعروف في الفيجوال بيسك . ويستخدم للتحديد وغيره مما لا يلزمنا شرحه .
RptLabel
: هو مجرد أداة لعرض النصوص التي لا تعتمد على قاعدة البيانات ، يمكن تغيير محتواها فقط بواسطة الكود قبل العرض مثلاً ، وتستخدم لوضع العنوان مثلاً وما شابه .
RptText
: هذا النوع مخصص للارتباط بحقل معين في قاعدة البيانات ، ويستخدم لوضع بيانات العملاء على سبيل المثال ، وسوف نتعرف لاحقاً على كيفية القيام بذلك .
RptImage
: لوضع صورة في التقرير . يمكن ضبطها أيضاً وقت التصميم باستخدام LoadPicture المعروفة .
RptLine
: خط لتنسيق طباعة التقرير .
RptShape
: أيضاً مثل ال Line السابق .
RptFunction
: تستخدم لعرض بعض العمليات التي قد نحتاج إليها لاحقاً ، وسنرى أمثلة عن ذلك لاحقاً .
وللبدء في التعامل مع البيانات من خلال زر عرض التقرير .
أولاً : للتحكم في الخصائص الثابتة .
مثل بيانات Rptlable ، الألوان وغير ذلك .
قم أولاً بوصف اسم DataReport ، ثم اسم القسم ، ثم اسم الاداة بالشكل التالي : DataReport2.Sections("Section2").Controls("l1").Ca ption = Lbl_name
ويمكن بنفس الطريقة التحكم بالالوان وما شابه ذلك .
القسم الثاني : كيفية ربط ال
RptTextBox بقاعدة البيانات .
خلال مرحلة التصميم احرص على ضبط الخواص التالية :
DataMember
و DataFields لتحديد اسم قاعدة البيانات ( كائن قاعدة البيانات أو اداتها ) ، و اسم الحقل المطلوب عرضه في هذا المكان .
ويمكن ضبطهما وقت التصميم أو التنفيذ ، ففي وقت التصميم وفي حقل DataFields يمكنك كتابة اسم الحقل مثل fullname ، في حين قم مثلاً بتنفيذ أمر تحديد مصدر البيانات وقت التنفيذ بالشكل التالي : Set DataReport1.DataSource = Rs
وهذا ما سنقوم بتوضيحه عند البدء في العمل مع الداتا ريبورت في برنامجنا .
القسم الثالث : كيفية استخدام
RptLable لعرض بعض العمليات .
يتم ذلك بوضع القيمة المناسبة في خاصية Caption لهذه الأداة ، فمثلاً لو قمنا بكتابة %D فإن ذلك يعطينا تاريخ اليوم ، %T تعطينا الوقت ، %P تعطينا عدد الصفحات الاجمالي ، أما %p فتعطينا رقم الصفحة الحالية .
القسم الرابع : كيفية استخدام
RptFunction
من خلال الخاصية FucntionType نختار طبيعة العملية التي نود القيام بها ، وذلك بعض ضبط خصائص قاعدة البيانات الخاصة بها كما اسلفنا في RptText ، ولن نستخدم هذه الاداة في برنامجنا .
الدرس السابع والعشرون - مقدمة إلى التعامل مع التقارير من خلال DataReport - RaggiTech - 15-10-12 أخيراً نذكر بأن هذه التقارير تستقبل كمصدر لبياناتها كائن قاعدة بيانات Ado ، لذلك لا بد من تعريف هذه الكائنات أولاً وذلك بالشكل التالي :
1- من قائمة Project ثم Refrences قم باختيار مكتبة للأدو مثل : Microsoft Access ActiveX Data Object 2.5 Library
2 - في أمر الطباعة لا بد من تعريف نسخة من كائن قاعدة البيانات من Ado ونسخة من جدول ومن ثم القيام بعملية التكوين لكليهما بالشكل التالي :
Dim cn As ADODB.Connection Dim Rs As ADODB.Recordset
Set cn = New ADODB.Connection Set Rs = New ADODB.Recordset 3 - والآن قم بربط قاعدة البيانات بمصدر قاعدة البيانات من نوع أكسيس مثلاً على سبيل المثال من خلال Connection String بالشكل التالي :
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Folder & "db1.mdb;" & "Jet OLEDB
atabase Password=" & PassWord"
يمكنك زيارة msdn للعثور على كيفية تكوين Connection String على هذا الرابط :
http://msdn.microsoft.com/library/de...onnections.asp
حيث يشرح القسم الذي يشير هذا الرابط إلى أحد أقسامه إلى كيفية بناء Connection String ، كما ويحيلك في آخره إلى أمثله بالكود ال Language Refernce ولكن بصورة اجمالية فإنك تمرر في البارميتر الأول نوع قاعدة البيانات ، الثاني تحدد له مكان قاعدة البيانات ، ويمكنك تمرير المزيد من البارميترات لاحقاً مثل كلمة المرور ، ويتم التفريق بين هذه البارميترات من خلال استخدام الفاصلة المنقوطة ; .
4 - الخطوة الاخيرة هي تحديد مصدر البيانات وربطه ب rs ومن ثم ربط rs مع DataReport ، ولا تنس ان مصدر البيانات قد يكون اسماً لجدول أو جملة استعلام :
sql = "select * from table1
"
Set Rs = cn.Execute(sql )
Set DataReport1.DataSource = Rs 5 - لا تنس أمر اظهار التقرير :
DataReport1.Show
6 - كما يمكنك طباعة التقرير دون عرضه من خلال الأمر :
DataReport1.PrintReport
ويمكنك اضافة بعض البارميترات الاضافية مثل True في البارميتر الأول لعرض مربع حوار طباعة قبل الطباعة لتحديد عدد النسخ وما شابه :
DataReport2.PrintReport True
أو تحديد Range - مدى الصفحات التي ستقوم بطباعتها ، إلى آخر ذلك من بارميترات هذه الوظيفة .
والآن سوف نطبق ما تعلمناه على طباعة شاشة عرض البضائع الرئيسي الموجودة في Frm_Show في البداية سوف نقوم بتكوين DataReport الخاص بنا ، وذلك بالشكل التالي - بعد اضافته من Add طبعاً - .
بالطبع ستكون عناوين الجدول في القسم Page Header لأننا نريد أن تظهر في بداية كل صفحة ، وسوف نقوم برسمها على هيئة Rpt_Labels ، ونضع المعلومات التالية كـ Caption لهذه العناصر .
رقم - اسم البضاعة - اسم المصنع - النوع - السعر - الكمية - وحدة/صندوق .
أي 7 من RptLabel .
وهذا القسم ثابت تماماً ... أما القسم الآخر فهو الذي يعتمد على القراءة من قاعدة البيانات .
سنرسم فيه على نفس العدد RptTextBox ، لكننا لن نضبط خاصية Caption بل إننا سنضبط خاصية Data Field ، وسنضع فيها الحقل مصدر البيانات ، وذلك على النحو التالي - بالترتيب .
tb_product.number - tb_product.name - tb_factory.name - tb_category.name - Price - Count - Box_Count
لاحظ أن الحقول التي لا تتشابه في الجداول توضع كما هي مباشرة ، أما المتشابهه فنسبقها باسم الجدول .
لاحقاً قم بضبط Font كما يحلو لك ، واجعل اللون للصف العلوي مثلاً مختلف عن الآخرين ، أو كما تريد .
قم باضافة ( بسم الله الرحمن الرحيم ) في اول صفحة ، ولا تنس إن اضفتها ألا تقوم بالقاء الورقة التي تطبعها . بامكانك أيضاً المحاذاة إلى اليمن أو اليسار ، أو توسيط النص في أي أداة .
يتبع ...
الدرس السابع والعشرون - مقدمة إلى التعامل مع التقارير من خلال DataReport - RaggiTech - 15-10-12 قم باضافة بعض RptLabel لتضع بها تاريخ اليوم وما شابه ذلك ، أيضاً مجموعة أخرى لنضع فيها اسم المحل ورقم هاتفه على سبيل المثال .
ستلاحظ أن تحديداتك للون الخلفية ، أو ظهور الخط لن تظهر إلا بعد ضبط الخاصيتين BackStyle و BorderStyle إلى 1 في الأداتين السابقتين .
حاول الوصول إلى الشكل التالي إن كان يناسبك ، وإلا فاختر الشكل الذي تود اضافته :
والآن إلى الجزء الخاص بكتابة الكود ، في البداية لا تنس ان تضيف المكتبات المطلوبة كما أوضحنا في جزء سابق من هذا الدرس .
الجزء الأول الخاص بتعريف كائنات من قاعدة البيانات والجداول :
كود : Dim cn As ADODB.Connectionتحديد مصدر البيانات لقاعدة البيانات ، ومصدر البيانات للتقرير :
كود : cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Folder & "db1.mdb;" & "Jet OLEDB:Database Password=" & PassWordكود : SQL = "select tb_product.*,tb_category.*,tb_factory.* from tb_product,tb_factory,tb_category where tb_product.category=tb_category.number and tb_product.factory=tb_factory.numberوأخيراً ضبط بعض الخصائص على سبيل المثال اسم المحل ورقم الهاتف :
كود : (DataReport1.Sections("Section2").Controls("label3").Caption = Info(2كود : DataReport1.Sections("Section2").Controls("label4").Captionأخيراً اظهار التقرير ، وحذف الكائنات من الذاكرة - بعد انتهاء الحاجة إليها - :
كود : DataReport1.Showكود : Set cn = Nothing والآن سنكتفي بهذا القدر في هذا الدرس ، ولكن في الدروس القادمة لن نتوسع في الشرح ، بل سنقوم بالاضافة مباشرة لذا احرص على استيعاب هذا الدرس جيداً .
والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .
|