العمليات الحسابية داخل التقارير DataReprot
صفحة 1 من اصل 1 • شاطر
العمليات الحسابية داخل التقارير DataReprot
العميات الحسابية داخل التقارير DataReprot
السلام عليكم ورحمةالله وبركاته
بدايةً آسف على تأخير الشرح نظراً لإنشغالي الايام السابقه باستمرار ،،،،السلام عليكم ورحمةالله وبركاته
كنت قد سالت عن كيفية عمل بعض العمليات الحسابية بداخل DataReport
وقد أجابني اخي الفاضل احمد مناع اجابه فوق الرائعه وأفادتني كثيراً فأشكره على جهده الرائع وشرحه الممتاز في تقديمه الاجابه على استفساري ..،
وللاستفادة الموضوع على هذا الرابط
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
ولكن ما اريد عمله لم يكن ضمن اجابة اخي الفاضل احمد مناع ولعل السبب في ذلك هو تقصير مني في محاولة توصيل المطلوب الى اخي احمد وبفضل الله توصلت الى الحل وهو انشاء عمليات حسابيه داخل DataReport من جمع وطرح وضرب وقسمه وخلافه ..
وحتى لا اطيل على حضراتكم اقدم لحضراتكم الشرح ..
نريد ان نجعل شكل التقرير النهائي كهذا مثلاً :وهو كشف حساب عميل يوضح حركة المبيعات لهذا العميل ومدفوعات هذا العميل
بعد تصميم شاشة اختيار العميل بهذا الشكل مثلاً
ولن اتطرق ليكيفه تحميل اسم العميل فهذا ليس موضوعنا
ولكن احب التركيز على جانب الطباعه فقط
بعد تصمصم التقرير بالشكل الذي تريده
ووضع الادوات اللازمة لمشروعك
ووضع الادوات اللازمة لمشروعك
وبعد وضع اداة الــ Text وربطها بالحقول التي
تريد اظهارها في التقرير عن طريق خاصية DataFeild
تريد اظهارها في التقرير عن طريق خاصية DataFeild
نأتي لخطوات الخاصيه بالعمليات الحسابية داخل التقرير
تحت زرار طباعه 1 Command مثلاً
نكتب الاكواد التاليه :
نكتب الاكواد التاليه :
باستخدام مكتبة الادو Ado
أولاً : -
يتم حجز متغير للاتصال بالجدول اللي هعمل منه التقرير كالتالي
- الكود:
[right]Dim SQL As New ADODB.Recordset[/right]
[right]SQL.CursorLocation = adUseClient[/right]
ثانياً : -
ثم تحديد
الحقول التي اريد اظهارها بالتقرير كما
بالكود التالي
- الكود:
SQL.Open " select CustomerName,
SalesInvoice , ActionDate ,DebitAmount , CreditAmount, Action_Type from
CustomersDebits where CustomerName =
'" & Combo1.Text & "' Order By ActionDate", Cn,
adOpenDynamic, adLockOptimistic
ثم نأتي للنقطة الهامة جداً وهي اظهار بعض العمليات الحسابيه داخل التقرير
أولاً نقوم بتحديد اسم التقرير مثلاً DataReport1 ،
ثم اسم القطاع الذي به الجزء التي تظهر به الاداة التي يتم بها العملية الحسابية مثلاً Sections("section2") ،
ثم اسم الاداة التي تظهر به ناتج العملية الحسابية
مثلاًً Controls("Label10").Caption
مثلاًً Controls("Label10").Caption
ثم تحديد ما الذي اريد اظهاره داخل هذا الجزء وفي هذه الاداة تحديداً.
فمثلاً إذا اردت ان اظهر حقل اسم
العميل CustomerName, داخل ادادة الــ Label أرجع الى الخطوة السابقة وأنظر
ترتيب حقل اسم العميل CustomerName, داخل جملة الـــ select ترتيبها
الكام ( علماً بأن الترتيب يبدأ من رقم
صفر ( 0 ) وليس من رقم واحد ( 1 )
العميل CustomerName, داخل ادادة الــ Label أرجع الى الخطوة السابقة وأنظر
ترتيب حقل اسم العميل CustomerName, داخل جملة الـــ select ترتيبها
الكام ( علماً بأن الترتيب يبدأ من رقم
صفر ( 0 ) وليس من رقم واحد ( 1 )
فهنا وجدت ان ترتيب حقل اسم العميل CustomerName, هو اول الحقول في جملة select السابقة وبالتالي تأخذ رقم ( 0 )
ليصبح الشكل النهائي لهذه الخطوة كالتالي : -
- الكود:
DataReport1.Sections("section2").Controls("Label10").Caption
= SQL.Fields(0)
'====================================================================
ثالثاً : -
وبتطبيق هذا
المفهوم يتضح لنا أنه يمكننا أن نقوم بعمل عمليات حسابيه أيضاً بناءاً على عملية
التحديد في جملة select
المفهوم يتضح لنا أنه يمكننا أن نقوم بعمل عمليات حسابيه أيضاً بناءاً على عملية
التحديد في جملة select
فمثلاً اريد
ان اعرف رصيد هذا العميل
ان اعرف رصيد هذا العميل
ولمعرفه
رصيد العميل
رصيد العميل
نقوم بحجز
متغيرين.. واحد للرصيد المدين والاخر للرصيد الدائن
متغيرين.. واحد للرصيد المدين والاخر للرصيد الدائن
واقوم بعملة
جمع للحقلين كل حقل مستقل بذاته.....
جمع للحقلين كل حقل مستقل بذاته.....
اي جمع حقل المدين
في خطوة
في خطوة
وجمع حقل
الدائن في خطوة اخرى
الدائن في خطوة اخرى
ثم ايجاد الفرق بينهم كالتالي :-
'لايجاد مجموع حقل المدين
- الكود:
[right]Dim Deb As New ADODB.Recordset[/right]
[right]Deb.CursorLocation = adUseClient[/right]
[right]Deb.Open " select sum(DebitAmount) from CustomersDebits where CustomerName = '" &
Combo1.Text & "'", Cn, adOpenDynamic, adLockOptimistic[/right]
ثم اسناد جمع
حقل المدين الى جزء معين في التقرير كما شرحنا في الخطوة الثانية
- الكود:
DataReport1.Sections("section5").Controls("Label13").Caption
= Deb.Fields(0)
'====================================================================
ولاحظ هنا
اننا قمنا بعمل sum(DebitAmount) لحقل المدين
داخل جملة التحديد select
اننا قمنا بعمل sum(DebitAmount) لحقل المدين
داخل جملة التحديد select
وهذا ما
سينتطبق ايضاُ لايجاد مجموع حقل الدائن
سينتطبق ايضاُ لايجاد مجموع حقل الدائن
رابعاً : -
'لايجاد مجموع حقل الدائن
- الكود:
Dim Cret As New ADODB.Recordset
Cret.CursorLocation = adUseClient
- الكود:
Cret.Open " select sum(CreditAmount)from
CustomersDebits where CustomerName =
'" & Combo1.Text & "'", Cn, adOpenDynamic,
adLockOptimistic
DataReport1.Sections("section5").Controls("Label14").Caption
= Cret.Fields(0)
'
*****************************************************************************
*****************************************************************************
خامساً : -
ايجاد الفرق بين مجموع الحقلين ( المدين والدائن )
واسناده ايضاً الى جزء معين في
التقرير كالتالي :-
التقرير كالتالي :-
'لايجاد الرصيد النهائي ( الفرق بين المدين والدائن
- الكود:
DataReport1.Sections("section5").Controls("Label12").Caption
= (Deb.Fields(0)) - (Cret.Fields(0))
لاحظ أن (Deb.Fields(0)) هو مجموع حقل المدين ..... الخطوة الثالثه من الشرح
لاحظ أن لاحظ أن (Cret.Fields(0)) هو مجموع حقل الدئن
... الخطوة الرابعة من الشرح
'
*****************************************************************************
*****************************************************************************
الخطوة السادسة : -
وهي حسب رغبتك في اظهار الرصيد
ايضاً بمكان اخر في التقرير غير السابق
ايضاً بمكان اخر في التقرير غير السابق
فهنا أردت ان اُظهر الرصيد ايضاً بالجزي العلوى من التقرير في section2
فيلزم هذا ايضاً تحديد الجزء من التقرير ثم اسم الاداة ثم .... ( راجع
الخطوة الثانية )
الخطوة الثانية )
'لايجاد الرصيد النهائي ( الجزء العلوي
- الكود:
DataReport1.Sections("section2").Controls("Label18").Caption
= (Deb.Fields(0)) - (Cret.Fields(0))
' *****************************************************************************
واخيراً
جعل الداتا سورس للتقرير هي جملة الــ select الاولى والتي تجمع كل الحقول
جعل الداتا سورس للتقرير هي جملة الــ select الاولى والتي تجمع كل الحقول
بهذا الكود
- الكود:
Set DataReport1.DataSource = SQL
ثم عمل Show للتقرير
- الكود:
DataReport1.Show
لاحظ كل هذه الخطوات تكتب تحت الــ Command الخاص
بالطباعه
بالطباعه
'
*****************************************************************************
*****************************************************************************
ولاحظ ايضاً باستخدام هذه الطريقة يمكن لنا ايجاد رصيد المخزن لصنف معين
عن طريق ايجاد الفرق بين مجموع
المشتريات وبين مجموع المبيعات
..........................................
وارجوا ان اكون وُفقت في توصيل المعلومة فهذه اول مرة لي في شرح ونشر اي
شيء يخص البرمجة على المنتديات … علماً بأني مبتدئ
**المشروع مرفق
رابط المشروع
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
[center]والله ولي
التوفيق
التوفيق
[/center]
عدل سابقا من قبل goldenman100 في السبت أكتوبر 13, 2012 11:28 am عدل 2 مرات
goldenman100- عضو شرفى
- تاريخ التسجيل : 09/08/2012
المساهمات : 27
النقاط : 46
التقيم : 1
الدولة :
الجنس :
رد: العمليات الحسابية داخل التقارير DataReprot
وارجوا ان اكون وُفقت في توصيل المعلومة فهذه اول مرة لي في شرح ونشر اي شيء يخص البرمجة على المنتديات … علماً بأني في مبتدئ
و الله اشكرك شكرا جزيلا على هذا المقال الاكثر من رائع اخى الكريم و اتمنى ان لا تبخل علينا باى معلومة قد تراة انت غيرة مهمة .....فشكرا جزيلا و اسعدنى تلك المشاركة
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: العمليات الحسابية داخل التقارير DataReprot
بارك الله فيك اخي احمد والشكر والتقدير لك والف شكرا على هذه اللمسات الاخيرة منك التي ذات المقال تنظيماً وتوضيحاً
واسف مرة اخرى على تأخير الشرح منذ انا وعدت به
واسف مرة اخرى على تأخير الشرح منذ انا وعدت به
goldenman100- عضو شرفى
- تاريخ التسجيل : 09/08/2012
المساهمات : 27
النقاط : 46
التقيم : 1
الدولة :
الجنس :
رد: العمليات الحسابية داخل التقارير DataReprot
قمت بعمل تعديل منذ قليل على المقال فوجدت ان المقال لم يظهر بالكامل فما السبب في ذلك ؟؟
وهل اعيد نشره مره اخرى ؟؟
وهل اعيد نشره مره اخرى ؟؟
goldenman100- عضو شرفى
- تاريخ التسجيل : 09/08/2012
المساهمات : 27
النقاط : 46
التقيم : 1
الدولة :
الجنس :
رد: العمليات الحسابية داخل التقارير DataReprot
goldenman100 كتب:قمت بعمل تعديل منذ قليل على المقال فوجدت ان المقال لم يظهر بالكامل فما السبب في ذلك ؟؟
وهل اعيد نشره مره اخرى ؟؟
الرجاء اخى الكريم إعادة الشرح مرة اخرى .....وجزاك الله خيرا
NEXT- الادارة
- تاريخ التسجيل : 18/02/2011
المساهمات : 446
النقاط : 200660
التقيم : 28
الدولة :
الجنس :
رد: العمليات الحسابية داخل التقارير DataReprot
بارك الله فيك يا اخى و نتمنى منك المزيد
م/موسي- الاشراف
- تاريخ التسجيل : 18/02/2011
المساهمات : 178
النقاط : 346
التقيم : 12
الدولة :
الجنس :
رد: العمليات الحسابية داخل التقارير DataReprot
شكرا لمجهودك [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
وانا فى الحقيقة استفت منكم كثيراً لكن بقى معى سؤال وهو كيف اعرض سجل واجد فقط لعميل واحد .... لمجرد تحديده فى كوبوا بوكس داخل فورم الفيجوال ومنه ينقلنى الى صفحة ريبورت بيها اسم العميل الذى قمت انا باختيارة وعرض تفاصيل عنه ياااااااااااريت الرد لانى بحاجه الى انهاء عملى ف برنامجى فى مرحلة التقارير تلك وشكراً
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
وانا فى الحقيقة استفت منكم كثيراً لكن بقى معى سؤال وهو كيف اعرض سجل واجد فقط لعميل واحد .... لمجرد تحديده فى كوبوا بوكس داخل فورم الفيجوال ومنه ينقلنى الى صفحة ريبورت بيها اسم العميل الذى قمت انا باختيارة وعرض تفاصيل عنه ياااااااااااريت الرد لانى بحاجه الى انهاء عملى ف برنامجى فى مرحلة التقارير تلك وشكراً
torky1985- .....
- تاريخ التسجيل : 25/05/2013
المساهمات : 82
النقاط : 115
التقيم : 1
الدولة :
الجنس :
| |
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
أمس في 8:56 pm من طرف moslema_r
» شركة مكافحة حشرات في راس الخيمة
أمس في 8:34 pm من طرف moslema_r
» تطبيقIncogniton لإدارة ملفات تعريف متعددة للمتصفح
الأربعاء أبريل 24, 2024 3:51 pm من طرف زاكااا
» افضل شركة مكافحة النمل الابيض بالرياض
الإثنين أبريل 22, 2024 9:41 pm من طرف moslema_r
» Exemplary Сasual Dating - Verified Women
الخميس أبريل 18, 2024 9:18 pm من طرف wdqwd
» رش الدفان بالرياض
الخميس أبريل 18, 2024 7:11 pm من طرف moslema_r
» شركة تنظيف خزانات الشارقة
الخميس أبريل 18, 2024 6:57 pm من طرف moslema_r
» شركة مكافحة الفئران بالرياض
الإثنين أبريل 15, 2024 8:23 pm من طرف moslema_r
» افضل شركة كشف تسربات المياه بالباحة
الخميس أبريل 04, 2024 7:02 am من طرف gmalnagy
» ساعدوني وفهموني help me
الجمعة مارس 29, 2024 8:37 am من طرف linesoft