تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس السابع والعشرون - مقدمة إلى التعامل مع التقارير من خلال DataReport
#1
[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 ، ولن نستخدم هذه الاداة في برنامجنا .
}}}
تم الشكر بواسطة:
#2
أخيراً نذكر بأن هذه التقارير تستقبل كمصدر لبياناتها كائن قاعدة بيانات 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 كما يحلو لك ، واجعل اللون للصف العلوي مثلاً مختلف عن الآخرين ، أو كما تريد .



قم باضافة ( بسم الله الرحمن الرحيم ) في اول صفحة ، ولا تنس إن اضفتها ألا تقوم بالقاء الورقة التي تطبعها . بامكانك أيضاً المحاذاة إلى اليمن أو اليسار ، أو توسيط النص في أي أداة .


يتبع ...


}}}
تم الشكر بواسطة:
#3
قم باضافة بعض RptLabel لتضع بها تاريخ اليوم وما شابه ذلك ، أيضاً مجموعة أخرى لنضع فيها اسم المحل ورقم هاتفه على سبيل المثال .



ستلاحظ أن تحديداتك للون الخلفية ، أو ظهور الخط لن تظهر إلا بعد ضبط الخاصيتين BackStyle و BorderStyle إلى 1 في الأداتين السابقتين .



حاول الوصول إلى الشكل التالي إن كان يناسبك ، وإلا فاختر الشكل الذي تود اضافته :







والآن إلى الجزء الخاص بكتابة الكود ، في البداية لا تنس ان تضيف المكتبات المطلوبة كما أوضحنا في جزء سابق من هذا الدرس .
الجزء الأول الخاص بتعريف كائنات من قاعدة البيانات والجداول :
كود :
Dim cn As ADODB.Connection
Dim Rs As ADODB.Recordset
Set cn = New ADODB.Connection
Set Rs = New ADODB.Recordset





تحديد مصدر البيانات لقاعدة البيانات ، ومصدر البيانات للتقرير :
كود :
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



"


Set Rs = cn.Execute(SQL



)


Set DataReport1.DataSource = Rs





وأخيراً ضبط بعض الخصائص على سبيل المثال اسم المحل ورقم الهاتف :
كود :
(DataReport1.Sections("Section2").Controls("label3").Caption = Info(2


كود :
DataReport1.Sections("Section2").Controls("label4").Caption



= "هاتف : " & Info(3)




أخيراً اظهار التقرير ، وحذف الكائنات من الذاكرة - بعد انتهاء الحاجة إليها - :
كود :
DataReport1.Show


كود :
Set cn = Nothing
Set Rs = Nothing






والآن سنكتفي بهذا القدر في هذا الدرس ، ولكن في الدروس القادمة لن نتوسع في الشرح ، بل سنقوم بالاضافة مباشرة لذا احرص على استيعاب هذا الدرس جيداً .



والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .
}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الدرس الرابع والثلاثون والأخير - نبذة عن العملية العكسية + تجهيز البرنامج على Cd RaggiTech 0 11,110 15-10-12, 09:10 AM
آخر رد: RaggiTech
  الدرس الثالث والثلاثون - كيفية عمل اعداد Setup للبرنامج RaggiTech 0 3,979 15-10-12, 09:08 AM
آخر رد: RaggiTech
  الدرس الثاني والثلاثون - التحويل إلى exe RaggiTech 0 4,065 15-10-12, 09:07 AM
آخر رد: RaggiTech
  الدرس الحادي والثلاثون - تعددية المستخدمين - البحث وطباعة الفواتير - التعليمات ... RaggiTech 2 4,951 15-10-12, 09:05 AM
آخر رد: RaggiTech
  الدرس الثلاثون - التعامل مع شريط الأدوات ToolBar RaggiTech 0 3,822 15-10-12, 08:59 AM
آخر رد: RaggiTech
  الدرس التاسع والعشرون - التعامل مع أشرطة الحالة Statues Bar RaggiTech 0 3,602 15-10-12, 08:57 AM
آخر رد: RaggiTech
  الدرس الثامن والعشرون -الطباعة في البرنامج . RaggiTech 4 5,293 15-10-12, 08:56 AM
آخر رد: RaggiTech
  الدرس السادس والعشرون - التقارير اليومية ، والتقارير بين تاريخين RaggiTech 1 4,347 15-10-12, 08:39 AM
آخر رد: RaggiTech
  الدرس الخامس والعشرون - الإحصائيات والرسوم البيانية RaggiTech 0 3,766 15-10-12, 08:37 AM
آخر رد: RaggiTech
  الدرس الرابع والعشرون - تقارير المصانع والأنواع RaggiTech 0 3,474 15-10-12, 08:36 AM
آخر رد: RaggiTech

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


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