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

العمليات الحسابية داخل التقارير DataReprot

اذهب الى الأسفل

العمليات الحسابية داخل التقارير DataReprot Empty العمليات الحسابية داخل التقارير DataReprot

مُساهمة من طرف goldenman100 الأحد أكتوبر 07, 2012 12:30 pm

العميات الحسابية داخل التقارير DataReprot


السلام عليكم ورحمةالله وبركاته
بدايةً آسف على تأخير الشرح نظراً لإنشغالي الايام السابقه باستمرار ،،،،

كنت قد سالت عن كيفية عمل بعض العمليات الحسابية بداخل DataReport

وقد أجابني اخي الفاضل احمد مناع اجابه فوق الرائعه وأفادتني كثيراً فأشكره على جهده الرائع وشرحه الممتاز في تقديمه الاجابه على استفساري ..،

وللاستفادة الموضوع على هذا الرابط

[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]


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

وحتى لا اطيل على حضراتكم اقدم لحضراتكم الشرح ..


نريد ان نجعل شكل التقرير النهائي كهذا مثلاً :وهو كشف حساب عميل يوضح حركة المبيعات لهذا العميل ومدفوعات هذا العميل





العمليات الحسابية داخل التقارير DataReprot 935950798
بعد تصميم شاشة اختيار العميل بهذا الشكل مثلاً





العمليات الحسابية داخل التقارير DataReprot 684258394


ولن اتطرق ليكيفه تحميل اسم العميل فهذا ليس موضوعنا


ولكن احب التركيز على جانب الطباعه فقط








بعد تصمصم التقرير بالشكل الذي تريده
ووضع الادوات اللازمة لمشروعك


وبعد وضع اداة الــ Text وربطها بالحقول التي
تريد اظهارها في التقرير عن طريق خاصية
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


ثم تحديد ما الذي اريد اظهاره داخل هذا الجزء وفي هذه الاداة تحديداً.




فمثلاً إذا اردت ان اظهر حقل اسم
العميل
CustomerName, داخل ادادة الــ Label أرجع الى الخطوة السابقة وأنظر
ترتيب حقل اسم العميل
CustomerName, داخل جملة الـــ select ترتيبها
الكام ( علماً بأن الترتيب يبدأ من رقم
صفر ( 0 ) وليس من رقم واحد ( 1 )


فهنا وجدت ان ترتيب حقل اسم العميل CustomerName, هو اول الحقول في جملة select السابقة وبالتالي تأخذ رقم ( 0 )


ليصبح الشكل النهائي لهذه الخطوة كالتالي : -





الكود:
DataReport1.Sections("section2").Controls("Label10").Caption
= SQL.Fields(0)






'====================================================================


ثالثاً : -


وبتطبيق هذا
المفهوم يتضح لنا أنه يمكننا أن نقوم بعمل عمليات حسابيه أيضاً بناءاً على عملية
التحديد في جملة
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


وهذا ما
سينتطبق ايضاُ لايجاد مجموع
حقل الدائن






رابعاً : -


'لايجاد مجموع حقل الدائن
الكود:
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 الاولى والتي تجمع كل الحقول


بهذا الكود




الكود:
Set DataReport1.DataSource = SQL


ثم عمل Show للتقرير


الكود:
DataReport1.Show





لاحظ كل هذه الخطوات تكتب تحت الــ Command الخاص
بالطباعه


'
*****************************************************************************


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


عن طريق ايجاد الفرق بين مجموع
المشتريات وبين مجموع المبيعات



..........................................


وارجوا ان اكون وُفقت في توصيل المعلومة فهذه اول مرة لي في شرح ونشر اي
شيء يخص البرمجة على المنتديات … علماً بأني مبتدئ



**المشروع مرفق





رابط المشروع


[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]


[center]والله ولي
التوفيق



[/center]


عدل سابقا من قبل goldenman100 في السبت أكتوبر 13, 2012 11:28 am عدل 2 مرات
goldenman100
goldenman100
عضو شرفى
عضو شرفى

تاريخ التسجيل : 09/08/2012
المساهمات : 27
النقاط : 46
التقيم : 1
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

العمليات الحسابية داخل التقارير DataReprot Empty رد: العمليات الحسابية داخل التقارير DataReprot

مُساهمة من طرف أحمد مناع الأحد أكتوبر 07, 2012 1:44 pm

وارجوا ان اكون وُفقت في توصيل المعلومة فهذه اول مرة لي في شرح ونشر اي شيء يخص البرمجة على المنتديات … علماً بأني في مبتدئ



و الله اشكرك شكرا جزيلا على هذا المقال الاكثر من رائع اخى الكريم و اتمنى ان لا تبخل علينا باى معلومة قد تراة انت غيرة مهمة .....فشكرا جزيلا و اسعدنى تلك المشاركة

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
أحمد مناع
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 1108
النقاط : 202034
التقيم : 144
الدولة : مصر
الجنس : ذكر

https://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

العمليات الحسابية داخل التقارير DataReprot Empty رد: العمليات الحسابية داخل التقارير DataReprot

مُساهمة من طرف goldenman100 الأحد أكتوبر 07, 2012 2:03 pm


بارك الله فيك اخي احمد والشكر والتقدير لك والف شكرا على هذه اللمسات الاخيرة منك التي ذات المقال تنظيماً وتوضيحاً
واسف مرة اخرى على تأخير الشرح منذ انا وعدت به
goldenman100
goldenman100
عضو شرفى
عضو شرفى

تاريخ التسجيل : 09/08/2012
المساهمات : 27
النقاط : 46
التقيم : 1
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

العمليات الحسابية داخل التقارير DataReprot Empty رد: العمليات الحسابية داخل التقارير DataReprot

مُساهمة من طرف goldenman100 الأحد أكتوبر 07, 2012 2:08 pm

قمت بعمل تعديل منذ قليل على المقال فوجدت ان المقال لم يظهر بالكامل فما السبب في ذلك ؟؟
وهل اعيد نشره مره اخرى ؟؟
goldenman100
goldenman100
عضو شرفى
عضو شرفى

تاريخ التسجيل : 09/08/2012
المساهمات : 27
النقاط : 46
التقيم : 1
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

العمليات الحسابية داخل التقارير DataReprot Empty رد: العمليات الحسابية داخل التقارير DataReprot

مُساهمة من طرف NEXT السبت أكتوبر 13, 2012 8:01 am

goldenman100 كتب:
قمت بعمل تعديل منذ قليل على المقال فوجدت ان المقال لم يظهر بالكامل فما السبب في ذلك ؟؟
وهل اعيد نشره مره اخرى ؟؟



الرجاء اخى الكريم إعادة الشرح مرة اخرى .....وجزاك الله خيرا
NEXT
NEXT
الادارة
الادارة

تاريخ التسجيل : 18/02/2011
المساهمات : 446
النقاط : 200660
التقيم : 28
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

العمليات الحسابية داخل التقارير DataReprot Empty رد: العمليات الحسابية داخل التقارير DataReprot

مُساهمة من طرف م/موسي السبت أكتوبر 13, 2012 12:42 pm

بارك الله فيك يا اخى و نتمنى منك المزيد
م/موسي
م/موسي
الاشراف
الاشراف

تاريخ التسجيل : 18/02/2011
المساهمات : 178
النقاط : 346
التقيم : 12
الدولة : تونس
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى