منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : درس مبسط :تمرير القيم من برامجنا لتقارير الكريستال ريبورت
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
بسم الله الرحمن الرحيم

ملاحظة:
الموضوع منقول من المنتدى القديم
وهو للأخ نور نبهان

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

الدرس:
افتح Microsoft Visual Studio2008 و أنشا مشروع جديد تحت المسمى الذي تريد
أذهب للنموذج Form1 وأضف عليه زر أمر Button1 وبعض الليبل Label و صناديق النص TextBox وهذا هو التصميم المبدئي للفورم الأول :
الآن فورم ثاني frmPrint أضف له CrystalReportViewer1 من شريط الأدوات وهذا شكل التصميم :
الآن من قائمة Project1 اختر Add New Item واختر تبويب Reporting وعلم على CrystalReport كما في الصورة التالي :
واختر Add
سيتم فتح التقرير في وضع التصميم :
اذهب لنافذة Field Explorer في الجهة اليسرى واختر Parameter Field
ثم اضغط بالزر الأيمن واختر NEW جديد.لإضافة متغير جديد للقائمة :
اختر أي اسم تريد وكذلك نوع المتغير من القائمة بحسب المطلوب وكرر ذلك بحسب ما تريد من متغيرات
أضف لمثالنا : 2 متغير من نوع String و3 من نوع Number وسمها مثلا :
NourP1,NourP2,NourP3,NourP4,NourP5
بعد إضافة المتغيرات قمت بسحبها بالفأرة إلى التقرير وإفلاتها في المكان الذي تريد كما في الصورة للتوضيح

لاحظ الأسماء الكبيرة هي فقط نصوص للتوضيح و المتغيرات هي ذات الخط الصغير
بذلك انتهينا من تصميم النماذج والتقرير ونتجه إلى جوهر الموضوع وهو كتابة الكود.
اذهب للفورم الأول وضغطتين على Button1 زر الطباعة واكتب الكود التالي :
PHP كود :
Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click
        
'زر الطباعة
        '
احداث تقرير طباعة
        Dim NourCrystal 
As New CrystalReport1
        
'المصدر
        frmPrint.CrystalReportViewer1.ReportSource = NourCrystal
        '
حجم العرض
        frmPrint
.CrystalReportViewer1.Zoom(100%)
        
'تحديث التقرير
        frmPrint.CrystalReportViewer1.Refresh()
        '
تغيير عنوان فورم الطباعة
        frmPrint
.Text "لاتنسونا من دعوة صالحة "
        '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        '
اسم الشركة  
        NourCrystal
.SetParameterValue(0TextBox1.Text)
        
'اسم المستخدم 
        NourCrystal.SetParameterValue(1, TextBox2.Text)
        '
العلامة الاولى 
        NourCrystal
.SetParameterValue(2TextBox3.Text)
        
'العلامة الثانية 
        NourCrystal.SetParameterValue(3, TextBox4.Text)
        '
المجموع 
        NourCrystal
.SetParameterValue(4TextBox5.Text)
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        
frmPrint.Show()
    
End Sub 
طبعا الكود مشروح ضمناً
لكن لاستيعاب الأمر بالنسبة لتخزين قيمة المتغيرات :
لاحظ هذا السطر من الكود وهو كل موضوعنا
رمز برمجي:
PHP كود :
NourCrystal.SetParameterValue(0TextBox1.Text
فهنا قمنا بتمرير محتوى TextBox1 إلى المتغير الأول حيث يبدأ الترقيم من الصفر والمتغير في مثالنا كان NourP1
فمتغيرات التقرير التي أضفناها هي كما في الصورة :
ولكي نسند قيمة لأحدها نستخدم الكود السابق :
رمز برمجي:

NourCrystal.SetParameterValue(x,y)
حيث قيمة x هو ترتيب المتغير ففي الصورة السابقة
NourP1=0
NourP2=1
NourP3=2
NourP4=3
NourP5=4
و قيمة y هي ما نريد وضعه في المتغير (نص رقم .........الخ)
يمكن أن نسند قيم صندوق نص كما سبق
أو قيمة متغير مخزن فيه عملية حسابية مثال
'المجموع

PHP كود :
Dim x As Integer        x Val(TextBox3.Text) + Val(TextBox4.Text)        NourCrystal.SetParameterValue(4x
ومن الإعدادات المخزنة :
PHP كود :
NourCrystal.SetParameterValue(4My.Settings.namecop
أو بالحساب المباشر :
'المجموع
PHP كود :
NourCrystal.SetParameterValue(4Val(TextBox3.Text) + Val(TextBox4.Text)) 
أو أي شرط نريده.
فقط تذكر أن هذا كل ما تريد :

[b]NourCrystal.SetParameterValue(ترتيب المتغير, القيمة)
طبعا أستهل الفرصة لطلب الدعاء منكم للنجاح في الاختبار القادم لي في الأيام القليلة المقبلة
و الله ولي التوفيق
و السلام عليكم ورحمة الله وبركاته



ملاحظة: تم وضع الموضوع بملف PDF بالمرفقات للحفاظ على الصور + مثال على الشرح .
[/b]
الاستاذ الفاضل : M.Sami.AK
أولاً شهادة أمام الله أن هذا المنتدى وأعضاؤه يمثلون أسمى انواع الأخلاق .. في الاهتمام بالرد على تساؤلات المشتركين .
قضيت 6 شهور أبحث عن حل لتلك المشكلة .. وهذا أول رد لي بالخطوات وشاكر جداً لرد حضرتك .. وحجرب وأرد على حضرتك
ألف شكر و تحية
أصلح الله بالك وجزاك الله خير
هل احتفظت بأعمال آخرى
شكرا .............
بارك الله فيك درس مفيد ومهم
شكرا جزيلا لكم على ما تبذلونه من جهد لنقل المعلومة المفيدة.
(26-09-12, 12:16 PM)m.sami.ak كتب : [ -> ]
بسم الله الرحمن الرحيم

ملاحظة:
الموضوع منقول من المنتدى القديم
وهو للأخ نور نبهان

بسم الله الرحمن الرحيم
وأفضل الصلاة و أتم التسليم على سيدنا محمد و أله وصحبه أجمعين
السلام عليكم ورحمة الله وبركاته
درس مبسط حول تمرير القيم من برامجنا لتقارير الكريستال ريبورت

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

الدرس:
افتح Microsoft Visual Studio2008 و أنشا مشروع جديد تحت المسمى الذي تريد
أذهب للنموذج Form1 وأضف عليه زر أمر Button1 وبعض الليبل Label و صناديق النص TextBox وهذا هو التصميم المبدئي للفورم الأول :

الآن فورم ثاني frmPrint أضف له CrystalReportViewer1 من شريط الأدوات وهذا شكل التصميم :

الآن من قائمة Project1 اختر Add New Item واختر تبويب Reporting وعلم على CrystalReport كما في الصورة التالي :
واختر Add
سيتم فتح التقرير في وضع التصميم :
اذهب لنافذة Field Explorer في الجهة اليسرى واختر Parameter Field
ثم اضغط بالزر الأيمن واختر NEW جديد.لإضافة متغير جديد للقائمة :
اختر أي اسم تريد وكذلك نوع المتغير من القائمة بحسب المطلوب وكرر ذلك بحسب ما تريد من متغيرات
أضف لمثالنا : 2 متغير من نوع String و3 من نوع Number وسمها مثلا :

NourP1,NourP2,NourP3,NourP4,NourP5

بعد إضافة المتغيرات قمت بسحبها بالفأرة إلى التقرير وإفلاتها في المكان الذي تريد كما في الصورة للتوضيح


لاحظ الأسماء الكبيرة هي فقط نصوص للتوضيح و المتغيرات هي ذات الخط الصغير

بذلك انتهينا من تصميم النماذج والتقرير ونتجه إلى جوهر الموضوع وهو كتابة الكود.
اذهب للفورم الأول وضغطتين على Button1 زر الطباعة واكتب الكود التالي :

PHP كود :
Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click
        
'زر الطباعة
        '
احداث تقرير طباعة
        Dim NourCrystal 
As New CrystalReport1
        
'المصدر
        frmPrint.CrystalReportViewer1.ReportSource = NourCrystal
        '
حجم العرض
        frmPrint
.CrystalReportViewer1.Zoom(100%)
 
       'تحديث التقرير
        frmPrint.CrystalReportViewer1.Refresh()
        '
تغيير عنوان فورم الطباعة
        frmPrint
.Text "لاتنسونا من دعوة صالحة "
 
       '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        '
اسم الشركة  
        NourCrystal
.SetParameterValue(0TextBox1.Text)
 
       'اسم المستخدم 
        NourCrystal.SetParameterValue(1, TextBox2.Text)
        '
العلامة الاولى 
        NourCrystal
.SetParameterValue(2TextBox3.Text)
 
       'العلامة الثانية 
        NourCrystal.SetParameterValue(3, TextBox4.Text)
        '
المجموع 
        NourCrystal
.SetParameterValue(4TextBox5.Text)
 
       %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
       frmPrint.Show()
 
   End Sub   
طبعا الكود مشروح ضمناً
لكن لاستيعاب الأمر بالنسبة لتخزين قيمة المتغيرات :
لاحظ هذا السطر من الكود وهو كل موضوعنا
رمز برمجي:
PHP كود :
        NourCrystal.SetParameterValue(0TextBox1.Text

فهنا قمنا بتمرير محتوى TextBox1 إلى المتغير الأول حيث يبدأ الترقيم من الصفر والمتغير في مثالنا كان NourP1
فمتغيرات التقرير التي أضفناها هي كما في الصورة :



ولكي نسند قيمة لأحدها نستخدم الكود السابق :
رمز برمجي:

NourCrystal.SetParameterValue(x,y)
حيث قيمة x هو ترتيب المتغير ففي الصورة السابقة

NourP1=0
NourP2=1
NourP3=2
NourP4=3
NourP5=4

و قيمة y هي ما نريد وضعه في المتغير (نص رقم .........الخ)
يمكن أن نسند قيم صندوق نص كما سبق
أو قيمة متغير مخزن فيه عملية حسابية مثال
'المجموع


PHP كود :
Dim x As Integer        x Val(TextBox3.Text) + Val(TextBox4.Text       NourCrystal.SetParameterValue(4x

ومن الإعدادات المخزنة :

PHP كود :
   NourCrystal.SetParameterValue(4My.Settings.namecop

أو بالحساب المباشر :
'المجموع

PHP كود :
NourCrystal.SetParameterValue(4Val(TextBox3.Text) + Val(TextBox4.Text)) 

أو أي شرط نريده.
فقط تذكر أن هذا كل ما تريد :


NourCrystal.SetParameterValue(ترتيب المتغير, القيمة)

طبعا أستهل الفرصة لطلب الدعاء منكم للنجاح في الاختبار القادم لي في الأيام القليلة المقبلة
و الله ولي التوفيق
و السلام عليكم ورحمة الله وبركاته



ملاحظة: تم وضع الموضوع بملف PDF بالمرفقات للحفاظ على الصور + مثال على الشرح .


الرجاء إرفاق الملفات مره اخرى للفائدة
او ارسالها على amko230231@gmail.com
المرفق لا يعمل ارجاء التاكد منه وشكرا
السلام عليكم ورحمة الله 

نرجوا من الاخوة تجديد الروابط

تحياتي وشكري لكم على الدوام