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

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

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

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

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


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

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

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

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

http://egy-tech.forumegypt.net/t225-topic#425


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

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


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





بعد تصميم شاشة اختيار العميل بهذا الشكل مثلاً








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


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








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


وبعد وضع اداة الــ 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 الخاص
بالطباعه


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


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


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



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


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



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





رابط المشروع


http://www.mediafire.com/?92gx0cky8fxmshc


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



[/center]


عدل سابقا من قبل goldenman100 في السبت أكتوبر 13, 2012 2:28 pm عدل 2 مرات

goldenman100
عضو شرفى
عضو شرفى

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

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

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

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

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



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

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

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

أحمد مناع
.
.

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

http://egy-tech.forumegypt.net

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

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

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


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

goldenman100
عضو شرفى
عضو شرفى

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

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

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

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

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

goldenman100
عضو شرفى
عضو شرفى

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

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

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

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

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



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

NEXT
الادارة
الادارة

تاريخ التسجيل : 18/02/2011
المساهمات : 262
النقاط : 378
التقيم : 10
الجنس : ذكر

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

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

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

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

م/موسي
الاشراف
الاشراف

تاريخ التسجيل : 18/02/2011
المساهمات : 130
النقاط : 252
التقيم : 8
الدولة : تونس
الجنس : ذكر

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

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


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