الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

حساب اجمالي كل صفحة

مغلق
بدأه فخرالدين سليمان محمد سليمان في 7 أغسطس 2007 · 3 رد · 2,450 مشاهدة · في تصميم وبرمجة التقارير
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اريد حساب اجمالي كل صفحة لحدة في الكريستال ريبورت علما بانني اعمل على كريستال ريبورت 4.6

مثلا اذا كان لدي 1000 سجل عند استدعاءها في الكريستال ريبورت يكون عدد الصفحات اكثر من 20 صفحة

اريد حساب كل صفحة منفصل ويكون بنفس الصفحة.

#2

أتحدث عن Crystal Report 10 ولا أعلم فعالية الطريقة مع غيره من الإصدارات

أخي آسف على التأخير...

نجحت في عمل حساب حاصل جمع حقل حسب الصفحة، والطريقة كالتالي:

أولاً: المطلوب:

- أن يتم جمع قيم حقل ما في صفحة وإظهار النتيجة في نفس الصفحة (أسفل الصفحة مثلاً).

- أن يتكرر هذا مع كل صفحة بحيث يكون في كل صفحة ناتج جمع قيم الحقل التي وردت فيها.

ثانياً: الطريقة:

- نقوم بتعريف متغير Variable يحتوي ناتج الجمع.

- نقوم بعمل ثلاث حقول صيغة Formula Fields:

--- حقل الصيغة الأول: يصفر المتغير ويعيد قيمته إلى الصفر، وهذا يوضع في القسم الخاص برأس الصفحة من التقرير Page Header،

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

--- حقل الصيغة الثاني: يقوم بعملية الجمع، وهذا يوضع في القسم الخاص بالتفاصيل Details،

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

--- حقل الصيغة الثالث: يظهر فيمة المتغير، وهذا يوضع في القسم الخاص بتذييل الصفحة Page Footer،

نريد أن يطبع هذا الحقل.

ثالثاً: مثال عملي:

لدينا جدول اسمه book وفيه حقلين و35 سجل. الحقلين هما:

BookID رقم الكتاب وهو نص

Price سعر الكتاب وهو رقم

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

التي وردت في هذه الصفحة فقط.

حسنا... لنتفق أننا نريد أن نحفظ ناتج الجمع في متغير اسمه x

ننشأ حقول الصيغة الثلاث (لمعرفة كيفية إنشاء حقل صيغة انظر الصورة المرفقة الأولى):

--- الحقل الأول الذي سيصفر ناتج الجمع مع كل صفحة:

1- أنشأ حقل صيغة جديد وأعطه الاسم F_Reset

2- ضع في الصيغة الكود التالي:

whileprintingrecords;
numbervar x;
x:=0

ملاحظة: قمنا بتصفير المتغير x في أخر سطر

--- الحقل الثاني الذي سيقوم بعمل الجمع مع كل سجل:

1- أنشأ حقل صيغة جديد وأعطه الاسم F_Sum

2- ضع في الصيغة الكود التالي:

whileprintingrecords;
numbervar x;
x:=x+{book.Price}

ملاحظة: قمنا بإضافة قيمة الحقل price إلى المتغير x

--- الحقل الثالث الذي سيقوم بإظهار النتيجة أسفل الصفحة:

1- أنشأ حقل صيغة جديد وأعطه الاسم F_Display

2- ضع في الصيغة الكود التالي:

whileprintingrecords;
numbervar x

ملاحظة: قيمة حقل الصيغة هذا = x

الآن نضيف الحقول إلى التقرير:

--- الحقل F_Reset يضاف إلى الجزء Page Header لأن التصفير سيبدأ مع كل صفحة.

--- الحقل F_Sum يضاف إلى الجزء Details لأن الجمه سيكون مع كل سجل.

--- الحقل F_Display يضاف إلى الجزء Page Footer لأننا نريد النتيجة أن تظهر في أسفل الصفحة.

الآن نقوم بعملية إلغاء طباعة الحقلين F_Reset و F_Sum لأننا نريد فقط أن نرى الحقل F_Display.

(لمعرقة كيفية إلغاء ظهور حقل في التقرير عند الطباعة انظر الصورة المرفقة الثانية)

post-87306-1187463635_thumb.jpg

post-87306-1187463649_thumb.jpg

تم تعديل هذه المشاركة بواسطة Adel_N في 18 أغسطس 2007 في 22:17

1

In order to understand recursion, one must first understand recursion

alawfiadel@yahoo.com

#3

بارك الله فيك يا اخي فعلا استاز والله ............. بس كان في حجاة اعتقد انها هتكون اسهل من كده لو انتا عملت حقل تجميع يعمل sum علي الحقل الخاص بالاسعار ووضعته في قسم page footer هيطهر اسفل كل صفحة عاديوكل صفحة هتكون فيها قيمة جميع سجلات الحقل المختار ....

#4
اقتباس
لو انتا عملت حقل تجميع يعمل sum علي الحقل الخاص بالاسعار ووضعته في قسم page footer هيطهر اسفل كل صفحة عاديوكل صفحة هتكون فيها قيمة جميع سجلات الحقل المختار ....

أخي لم أفلح في هذا لسبب:

1- أنه من غير المسموح وضع Summary Field في الجزء Page Footer أو Page Header أو Details.

2- أن Running Totals لا تدعم خاصية التصفير مع كل صفحة جديدة.

لذلك استخدمت أنا Formula Field.

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

كنت أتمنى لو استفاد صاحب الموضوع.. لا أعلم أين ذهب...

أخوك المخلص دائماً.

تم تعديل هذه المشاركة بواسطة Adel_N في 7 أكتوبر 2007 في 22:01

In order to understand recursion, one must first understand recursion

alawfiadel@yahoo.com

هذا الموضوع مغلق.

مواضيع مشابهة