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

تقرير بالجمالي صفحات التقرير اى خلاصه

بدأه باهر في 12 سبتمبر 2009 · 14 رد · 1,109 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

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

وانا اريد تقرير اخر يبين لي اجمالي كل صفحه علي شكل جدول يوضح

مثل الصوره المرفقه

_____.rar

وهذه قاعدة البيانات

sum_page.rar

#2

للرفع مع خالص التقدير

#3

للرفع

#4

وعليكــم السـلام ورحمة الله وبركاتـه..

أخي الكريم، أرجو الاطلاع على الملف المرفق من أجل ملخص التقرير ومن أجل مشكلة تجميع السجلات كذلك...

والله أعلم

sum_page.rar

#5

السلام عليكم ورحمة الله وبركاته

اعاد الله عليكم شهر رمضان بكل خير

اخي الكريم مبارك الحيقي

بارك الله فيك وانار الله طريق وزاك علما ونور من نور وغفرالله لك ولوالديك

ملاحظه يوجد مشكله في التقرير tbl1 عند فتح في كود DoCmd.RunSQL "INSERT INTO tblSummary VALUES (" & Me.Page & ", " & Me.txtPageTotal & ")"

ارجو معرفة سببها

مع خالص احترام لشخصكم الكريم

اخوكم باهر

#6

وعليكم السلام ورحمة الله وبركاته أخي..

لم أستطع إيجاد المشكلة، لأن التقرير يعمل عندي، فهل من الممكن مزيد توضيح أو إرفاق نسختك (هل اسم العنصر txtPageTotal صحيح؟)..

جزاك الله خيراً وأثابك بدعائك وزادنا وإياك من فضله.

#7

اخي الكريم والفاضل /أحمد مبارك الحيقي بارك الله فيك واسعد الله ايام

اني والله في احراج منك لكن بعد عدة محاولات وبائب بالفشل في استعلام تجميع كل 10 سجلات

لتطبيق الاستعلام الرائع الذيع عملته انت لم استطيع انسخ جملة sql لكن تطلع رسالة خطاء

في قاعده اخر ومسميات اخر ارجوا منكم التكرم بشرح الاستعلام وكيف يمكن عمل مثله في قاعده اخرى ولك مني خالص الاحترام

والتقدير لشخصكم الكريم

اخوكم باهر

تم تعديل هذه المشاركة بواسطة باهر في 17 نوفمبر 2009 في 12:50

#8

أخي العزيز، أنت على الرحب والسعة، بارك الله فيك...

قمت أخي بكتابة شرح مختصر لفكرة الاستعلام، فأرجو أن تكون واضحة، وإلا فلا تتردد في الاستفسار، فنحاول ما تيسر أو يحاول معنا الإخوان بإذن الله تعالى (ملحوظة: تحتاج إلى قليل من التأمل والتفكير من أجل فهم العبارات في حالة لم تكن عندك خبرة سابقة كافية في SQL):

لنفترض أن لدينا الجدول التالي ذي الحقلين:

post-70171-1258451907_thumb.jpg

المطلوب: تجميع كل عشرة صفوف معاً في صف واحد، واحتساب مجموعها. وهكذا يصبح لدينا من الـ 33 صفاً أعلاه أربعة صفوف، الصف الأول يمثل الصفوف 1 – 10 (رقم 39 – 48 حسب الحقل num أعلاه)، والثاني يمثل الصفوف 11 – 20 (49 – 58)، والثالث يمثل الصفوف 21 – 30 (59 – 70) ، والأخير يمثل الصفوف 31- 33 (71 – 73). الشكل النهائي مع مجموع كل عشرة صفوف ينبغي أن يكون كالتالي:

post-70171-1258451916_thumb.jpg

نقوم أولاً بترقيم الصفوف كالتالي:

SELECT temp.num, temp.price, (select count(*) from test where [num]<[temp].[num]) AS serial FROM test AS temp

اسم الجدول عندي test. واسم temp هو مجرد اسم مؤقت مستعار للجدول من أجل عملية الترقيم المتسلسل عبر الاستعلام الفرعي (لمزيد من الاستعلامات الفرعية يمكنك مراجعة آخر حلقة من السلسلة التي تجد رابطها في توقيعي).

فيكون الناتج كالتالي:

post-70171-1258451928_thumb.jpg

الآن، الفكرة هي بقسمة الرقم المتسلسل الجديد على 10 وحذف الكسر؛ هذا يقودنا إلى الاستعلام التالي:

SELECT Int(serial/10)+1 AS [Group No], price
FROM (SELECT temp.num, temp.price, (select count(*) from test where [num]<[temp].[num]) AS serial FROM test AS temp) AS temp1

ونتيجته:

post-70171-1258451938_thumb.jpg

الاستعلام السابق هو نفس الاستعلام الأخير، لكننا اخترنا منه ناتج قسمة المتسلسل على 10، وحقل السعر. هكذا أصبح لدينا الآن أربع مجموعات من 1 إلى 4، ويمكن ببساطة تجميع السعر حسب رقم المجموعة، هكذا:

SELECT Int(serial/10)+1 AS [Group No], Sum(temp1.price) AS [Group Total]
FROM (SELECT temp.num, temp.price, (select count(*) from test where [num]<[temp].[num]) AS serial
FROM test AS temp) AS temp1
GROUP BY Int(serial/10(

ويصبح الناتج النهائي لتركيب هذه الاستعلامات الفرعية هو:

post-70171-1258452085_thumb.jpg

وهو المطلوب الذي كنا نبحث عنه!

الخلاصة أنك تستطيع استخدام نفس الاستعلام تماماً مع مراعاة تغيير اسمي الحقلين: num وprice. أما باقي الأسماء فلا يهم، يمكنك اختيار ما تشاء، فما هي إلا أسماء مؤقتة.

والله أعلم.

تم تعديل هذه المشاركة بواسطة أحمد مبارك الحيقي في 17 نوفمبر 2009 في 13:07

#9

اخي الكريم / /أحمد مبارك الحيقي سقاك الله من حوض الجنة شربه مريئة لاتضماء بعدها ابداء

الاستعلام نجح معي تمام

اخي العزيز ممكن يكون الالفرز الاستعلام الفرعي حسب حقل num حتي يصير التجميع لسجلات متسلسله حسب حقل num

لني عملته ولم تفلح

ولايخيلب الله لك رجي ولايرجعلك دعاء الهم امين يارب العالمين

SELECT Int(serial/10)+1 AS [Group No], Sum(temp1.price) AS [Group Total]
FROM [SELECT temp.num, temp.price, (select count(*) from test where [num]<[temp].[num]) AS serial
FROM test AS temp]. AS temp1 ORDER BY temp.num
GROUP BY Int(serial/10);

تم تعديل هذه المشاركة بواسطة باهر في 17 نوفمبر 2009 في 14:06

#10

اللهم آمين... أسأل الله أن يتقبل دعاءك وأن يثيبك مثله... آمين.

أخي إن كنت فهمت مرادك،فالاستعلام الفرعي يكون كالتالي:

SELECT temp.num, temp.price, (select count(*) from test where [num]<[temp].[num]) AS serial
FROM test AS temp ORDER BY temp.num

والاستعلام الأخير يكون كالتالي:

SELECT Int(serial/10)+1 AS [Group No], Sum(temp1.price) AS [Group Total]
FROM [SELECT temp.num, temp.price, (select count(*) from test where [num]<[temp].[num]) AS serial
FROM test AS temp ORDER BY temp.num]. AS temp1
GROUP BY Int(serial/10);

والله أعلم.

#11

اخي الكريم/ أحمد مبارك الحيقي بعد التعديل الاخير ظهرات الرسالة الخاء من جديد

عند اضافة AS temp ORDER BY temp.num ولا ادر ماهو السبب انا في اشد الاسف

لاتعابك معي في هذه المسائله واسماء الحقول التي لدي هي على النحو التالي

اسم الجدوال استعلام1 لان التجميع مبني على استعلام لنها قاعده بيانت جهاز ومن زمن كثير واريد تغيير المسميات الى الغاله اللانجليزيه للستعلام

اسم الحقل emp_id

حقل الراتب allra

الحقل الثاني alldo

#12

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

لكن من أجل التمكن من فهم المشكلة، هل يمكن أن تنقل رسالة الخطأ بالضبط؟ وما هو دور الحقل الثاني؟ هل يتم تجميع قيمه كل عشرة موظفين مثل الحقل الأول؟

#13

هذه صور الخطاء اخي احمد

error.rar

#14

حسناً، دعنا نر ما يمكن عمله، ولو أخذنا وقتنا...

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

SELECT Int(serial/10)+1 AS [Group No], Sum(temp1.alldo) AS [Group Total]
FROM [SELECT temp.emp_id, temp.alldo, (select count(*) from tbl1 where [emp_id]<[temp].[emp_id]) AS serial
FROM tbl1 AS temp ORDER BY temp.emp_id]. AS temp1
GROUP BY Int(serial/10)

يصبح كالتالي:

SELECT Int(serial/10)+1 AS [Group No], Sum(temp1.alldo) AS [Group Total]
FROM (SELECT temp.emp_id, temp.alldo, (select count(*) from tbl1 where [emp_id]<[temp].[emp_id]) AS serial
FROM tbl1 AS temp ORDER BY temp.emp_id) AS temp1
GROUP BY Int(serial/10)

تم تعديل هذه المشاركة بواسطة أحمد مبارك الحيقي في 19 نوفمبر 2009 في 12:54

#15

اخي احمد مبارك .

سلمت اياديك البيضاء من كل سواء وزادك الله علما ونفع بك اكثر الله من امثالك

مع خالص احترامي لشخصكم الكريم ولجميع اعضاء المنتدي الافاضل

اخوكم باهر

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