الرئيسية > برمجة التقارير > تعلم تقارير Visual Studio – الجزء الرابع

تعلم تقارير Visual Studio – الجزء الرابع

عرض التقرير على نافذة WindowsForm :
لنفترض أنه يوجد لديك نافذة في مشروعك اسمها Form1 وتود عرض التقرير عليها ، فكل ما عليك القيام به هو ما يلي :
1. أضف الاداة Reportviewer على النافذة من المجموعة Data في صندوق الأدوات ToolBox .
2. سيظهر لك الجزء ReportViewer Tasks اختر منه اسم ملف التقرير المطلوب والذي سيكون في حالتنا Report1 من الخيار Choose Report .

سيتم عمل اللازم بشكل تلقائي ، قم بتشغيل تطبيقك لترى النافذة وقد ظهرت بالشكل التالي :

مبروك لقد قمت بعمل أول تقرير لك ! ما رأيك الآن بهذا النوع من التقارير وسهوله التعامل معه وتصميمه وما إلى هناك ؟ طبعا لاحظ انك لن تحصل على نفس الشكل وذلك لانني قمت ببعض التنسيقات البسيطه على التقرير حتى يظهر بشكل اوضح ، وبالنسبه لك تستطيع تقليدها بأسرع من البرق !

ألم تقتنع بعد بأنه أسهل من CrystalReports بعد ؟ حسنا تابع الأجزاء التالية .

تجميع البيانات الظاهرة على أداة Table :
في اغلب تقاريرنا نحتاج إلى اظهار البيانات على شكل مجموعات حسب قيمه حقل معين ، كإظهار موظفي جامعة أهلا عرب لوحدهم ( لا يوجد لدينا موظفين ! ) وموظفي VB4ARAB لوحدهم ( ولا اعتقد لديهم موظفين ! ) ، أدوات تقارير visual studio توفر لك اغلبها إمكانية التجميع Grouping ومن يرفض منها فسنفعل ذلك رغما عنها ( كما سنذكر لاحقا ) ، ولعمل group أساسية ( حيث يمكن عمل الكثير من الـ Groups بأنواع أخرى ) نتبع الخطوات التالية :

1. ( يا عيني على المبرمجين ! ) من نافذة خصائص الأداة Table1 نختار لسان التبويب Groups ثم Details Grouping وستظهر لنا نافذة جديدة ( ستعتاد قريبا على كثره النوافذ المتوالدة في هذا النوع من التقارير ) .
2. من النافذة الظاهرة ومن لسان التبويب General وأسفل كلمة Group On نقوم بإضافة الحقل / الحقول / الصيغة !! المطلوبة لعمل المجموعة حسبها .
3. اضغط على OK مرتين وشغل التطبيق ، مبروك تم عمل التجميع بسهولة كبيرة .

دعني أخبرك بوجود طريقة أخرى لإضافة مجموعة وهي بالنقر على رمز صف التفاصيل Details بالزر الأيمن واختيار Edit Group ، هذا سيقودنا إلى أن كل التفاصيل الظاهرة على هيئة صفوف rows ما هي إلا عبارة عن مجموعات ! فقط جرب أن تعيد الحركة السابقة وتضغط الامر Insert Group وأنشئ مجموعة جديده بنفسك واضغط على OK وشاهد النتيجه بنفسك والتي تتمثل في إضافة صفين واحد فوق المجموعة Details وآخر أسفلها ( لا تشغل بالك فهذا مجرد مثال فقط )
هناك امر اود ذكره هنا ، وهو ان المجموعة الواحدة قد تحتوي على أكثر من حقل واحد وكذلك يمكنك اضافه صيغ Expressions مثلا في احد برامجي استخدمت الصيغة التالية للتجميع :

كود:
=Format(Fields!Date.Value,"MMMM yyyy")

وفكر في الصيغة السابقة قليلا فهي ستفتح لك أفكار جديدة . أمر آخر يزيد روعة المجموعات هنا، وهو إمكانية عمل فرز تصاعدي أو تنازلي ولأي حقل تريده ( أو حتى صيغه ! ) في كل مجموعة على حده وذلك بتحرير المجموعة واختيار لسان التبويب Sort كما بالشكل التالي :

لحظة لم ينتهي الأمر بعد ، فلك أن تتخيل انك تريد أن تعمل تصفيه Filter على المجموعة Group فذلك ممكن أيضا وبشكل عن طريق لسان التبويب Filter .

التجميع بأداة List :
ان التجميع بهذه الاداة يتيح لك مرونه فائقه جدا ، فكما ذكرنا سابقا الأداة List تحضن مجموعة أدوات بداخلها وتزودها بمصدر البيانات الخاص بها ، أي ان الأدوات التي توجد بداخلها تأخذ منها البيانات ، وتعد هذه الاداة الطريقة المثلى لعرض البيانات على مجموعة ادوات مختلفه تتشارك جميعها في نفس المجموعة Group من البيانات أو الفرز أو الفلترة . بصيغه أخرى ، من إسم الأداة نعرف بانها قائمة تحتوي على عناصر ، هذه العناصر هي عباره عن ادوات اخرى كـ textbox,Table,Matrix وغيرها ولها نفس مصدر البيانات .

وقبل أن نبدأ معها ، سأفترض وجود جدول معك يحمل الاسم Contacts وبه الحقول Name,City,MobilePhone . والعمل الفعلي سيكون من خلال عدة مراحل نذكرها :
1. اختيار الـ dataset للاداة List .
2. تحرير الـ Details Group للاداة List .
3. ( إختياري حسب نوع الاداة ) إسناد الـ dataset للاداة ليكون نفس الخاص بـ List .
4. وضع الحقول على الاداوت المناسبة .

نقطة أشدد على وجوب تذكرها ، وهو انك لن تستطيع ان تستفيد من الاداة list بدون تحرير تجميع التفاصيل Details Group الخاص بها ، فهي بدونها ستكون بدون فائده تذكر ، وستظهر لك رسائل خطأ في وقت الترجمة تمنع اكمال تحميل البرنامج في الذاكرة وترجمته .

من استخدام List تجني فوائد كثيرة فيمكنك عمل Grouping وعرض البيانات على ادوات لا تدعم المجموعات بشكل مباشر مثل الـ TextBoxes ، عمل بطاقات وغيرها .
ومن أبرز فوائد استخدام الـ List التي تعجبني هو عمل تقارير بطريقة Master/Details الرائعة ! كيف ؟ سنوضحها كما يلي :

اضف إلى مصادر بيانات التقرير Report Data Sources جدولين مرتبطين وفي المثال لدي قمت بإضافه الجدولين Orders/OrderDetails من قاعدة بيانات Northwind ، ثم نضيف اداة List إلى الـ Body الخاص بالتقرير ، ومن خصائصها نختار الجدول الرئيسي Orders كمصدر لبيانات الاداة ، ثم نضع عليها مجموعة من الـ Textboxes واحد منها نكتب عليه ” Order ID ” وبجانبه اداة اخرى مثلها نضع عليها محتوى الحقل OrderID أي ان صيغتها تكون ” =Fields!OrderID.Value ” ونقوم بنفس العمليه للحصول على عنوان ومحتوى للحقل OrderDate ، ثم نضع اسفلها اداة اخرى ونكتب عليها Order Details ونضيف اسفلها اداة جدول Table نضغط عليها بالزر الايمن على احد حدودها أو على الخليه العلوية اليسرى ، ونظهر نافذه الخصائص التابعه لها ، ويكون مصدر البيانات الخاص بها هو الجدول OrdersDetail ونضع عليها الحقول UnitPrice,Quantitiy,Price بسحبها من نافذه الـ dataSource إلى الصف الثاني من الأداة الواحد تلو الآخر .
مختصر الفقرة الماضية سيكون شكل التقرير كالتالي :

أرأيت روعة التقرير الذي عملته ؟ قمنا بعمل تقرير Master/Details يظهر الـ details الخاصه بكل Order على شكل جدول اسفل العناوين .

التصنيفات :برمجة التقارير
  1. parmeter Report
    سبتمبر 19, 2008 الساعة 12:03 ص

    الاخ الفاضل النبهانى نريد شرح طريقة استخدام البارميتر فى هذه التقارير

  2. سبتمبر 19, 2008 الساعة 12:15 م

    اهلا بك اخي

    لم اقم في هذا التقرير باستخدام الباراميترات ، ولكن الرابط التالي به درس بسيط حول كيفية عرض سجل واحد بواسطة الباراميترات سيفيدك كثيرا بإذن الله تعالى :
    https://alnabhani.wordpress.com/2008/08/15/print_one_row_report/

  3. نايف الحامد
    مارس 20, 2009 الساعة 2:19 ص

    مشكور استفدت من هذه المعلومات
    غفر الله لك ورحمكم

  4. أكتوبر 13, 2009 الساعة 10:57 ص

    دروسك شيقة ورائعة جدا ,, وبدأت أحاول بنفسي إكتشاف كيفية تصميم التقارير بالفيجول بيسك دوت نت لكن واجهتني مشكلة ,,
    وهي أنه يحصل لي خطأ عند وضع إي حقل من حقول قاعدة البيانات في رأس التقرير أو ذيل التقرير
    ورسالة الخطأ هي :

    The Value expression for the textbox ‘textbox8’ refers to a field. Fields cannot be used in page headers or footers

    ‘textbox8’ هذا إسم مربع النص الذي وضع فيه الحقل وأما قيمة ال Value له =
    Fields!Name.Value, “CenterDataDataSet_CenterInfo”=

    CenterDataDataSet_CenterInfo هذه إسم الداتا سيت والجدول
    أرجو التكرم منك بحل المشكلة وجزاك الله كل خير

    أخوك AL-RAHEEB

  5. samir-atia
    يناير 17, 2010 الساعة 3:43 م

    هاااااااااااااااااااااااااااااااااااااااااااااااااااايل أخي الحبيب أستاذ النبهاني
    بارك الله فيك وجزاك الله كل خيييييييييييييييييييييييييييييييييير

  6. أبريل 30, 2010 الساعة 11:22 م

    مثال ممتاز … شكرا لك .
    لدي سؤال إن سمحت لي :
    كيف أضع الرقم التسلسلي … كما هو الحال في الصورة رقك 1 … من مثالك ..
    يعني قبل لا يجي ( customer Id ) يوجد ( No. ) ؟؟
    ويبدأ من 1 لكل مجموعة .

    أنتظرك مع سالف الشكر .

  7. سبتمبر 16, 2010 الساعة 11:26 ص

    أخي النبهاني هل ممكن شرح هذا الإجراء

    Private Sub ReportViewer1_Sort(ByVal sender As System.Object, ByVal e As Microsoft.Reporting.WinForms.SortEventArgs) Handles ReportViewer1.Sort

    End Sub

    من أجل الترتيب داخل التقرير ديناميكا حسب العمود المختار أو هل هناك إجراء أخر و جزاك الله خيراً

  8. ابو على
    فبراير 2, 2011 الساعة 10:56 م

    الاخ النبهانى
    شكرا جزيلا على المجهود الرائغ لشرح تقارير الدوت نت واضدق القول بانى كنت من المغرمين بالكريستال ريبورت ولكن بعد قرائتى للأجزاء الاربع قررت ان اترك الكريستال ريبورت وخصوصا بعد استخدام دوت نت 2010 الذى تم فصل الكريستال عنه
    اخيرا لى عندك رجاء وهو ان تكمل الجزء او الاجزاء الباقية ولك كل الشكر ويريد يكون مع 2010
    ابو على

  9. Alaa
    مارس 12, 2011 الساعة 5:16 ص

    اتبعت طريقتك وهي فعلا جميلة جدا وسهلة

    لكن هناك مشكلة صغيرة
    على ما يبدو أن التقرير عند معاينته للطباعة أو عند طباعته يظهر الجداول على يسار الصفحة وهذا لا يتناسب مع التقارير العربية
    هل يمكن أخي الفاضل أن يتم حل هذه المشكلة ؟؟
    الرجاء للايضاح اكثر انظر هذه المشاركة
    http://www.vb4arab.com/vb/showthread.php?t=74849

    شكرا لك

  10. Alaa
    أبريل 11, 2011 الساعة 10:53 م

    انتظرتك طويلا وقد أعياني السؤال

  11. سبتمبر 20, 2011 الساعة 2:12 م

    طيب ممكن اعمل تقرير لعميل واحد يعني المستخدم يدخل اسم العميل اللي عايزة ويظهرلة التقرير في برنامج الفجول بيسك 6
    ازا في مجال الشرح مع الصور

  12. Hazem
    أغسطس 21, 2012 الساعة 4:03 م

    طب ممكن مساعدة
    عندي بحث وظهر فى داتا جريد .. عاوز أطلع النتيجة اللى ظهرت فى ريبوت فيور
    ارجو المساعدة وكتابة الفكرة أو فيديو قصير يلم بالموضوع جزاك الله خيرا
    بجد محتاجة مع شرح مبسط لو سمحن إن أمكن
    جزاك الل خيرا

  1. No trackbacks yet.

أضف تعليقاً

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s

%d مدونون معجبون بهذه: