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

معدل قيم بعد حذف قيمة صفر

مغلق
بدأه abu_mubarak في 1 نوفمبر 2002 · 11 رد · 728 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اشكركم على هذه الجهود المميزة

وقد غبت كثير و عدت اليوم باسم جديد بعد ان حاولت الدخول باسمي السابق و لكن الظاهر للسن حدود

أخواني لدي استعلام به مجموعة من الحقول الرقمية

ومسماها مثلا a1 a2 a3 a4

واريد ان احسب المتوسط للقيم السابقة دون ان يتم وضع عدد الحقول ( بمعنى لوكان عدد الحقول خمسة .. فأن المتوسط يكون المجموع تقسيم خمسة ) هذا يسبب لي مشكلة في عدم ثبات حقول القيم

و الذي أريده

أن يتم احتساب المعدل أو المتوسط للقيم بدون اعتبار او احتساب الحقل الذي قيمته صفر

ارجو افادتي بالطريقة و بارك الله فيكم

#2

ان كنت تحصل علي المتوسط فى استعالم تجميع

فيمكنك اضافة الحقل مرة أخري مع اختايار أنه شرط باضافة Where

و تضع فى خانة المعايير <>0

و بنفس المفهوم اذا كان فى فورم أم تقرير يمكنك استثناء البيانات التي = 0 من مصدر البيانات بوضع نفس الشرط عليها

فان لم يكن فأخبرنا بالحالة تفصيلا لنلجأ للكود

#3

أخي شكرا على ردك

الذي لدي هو استعلام تحديد

يحتوي على عدد من القيم

أريد ان احصل على متوسطها بدون القسمة على عدد الحقول

وايضا باستبعاد الحق الذي قيمته يساوي صفر

أخوك ترى عليمي شوي

اذا ممكن تكتب المعادلة التي اضعها في الاستعلام

حيث انني كتبت التالي

المعدل:[مجموع 1]/5

حيث مجموع1 هو حقل فتحته في الاستعلام يقوم بجمع القيم في الحقول a1 a2 a3 a4 a5

وقسمتها على خمسة

ولكن هذا لا اريده لان المطلوب ان يعطي المتوسط بعد استبعاد قيم الصفر

شكرا لك و اسف على الازعاج

#4

السلام عليكم

ضع هذه الدالة في مديول (وحدة نمطية)

Function GetAvg(a1, a2, a3, a4, a5) As Double

Dim Items As Byte

If a1 <> 0 Then Items = 1

If a2 <> 0 Then Items = Items + 1

If a3 <> 0 Then Items = Items + 1

If a4 <> 0 Then Items = Items + 1

If a4 <> 0 Then Items = Items + 1

If Items <> 0 Then

GetAvg = (a1 + a2 + a3 + a4 + a5) / Items

Else

GetAvg = 0

End If

End Function

واستخدامها كالتالي:

المجموع = GetAvg(a1,a2,a3,a4,a5)

تحياتي

#5

أخي لم يضبط

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

#6

أخي لماذا لم يضبط ؟

هذا كود بسيط للغاية لا يحتاج التجربة !!

لو تفضلت ووضعت النتيجة أي رسالة الخطأ التي تستقبلها عند استخدام الكود .

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

طبعا ممكن الأخوة يزودونك بأكواد جديدة أو حلول أخرى تطمئن لها أكثر .. بس ترى أخوك (مو عليمي) .

تحياتي

#7

أخي أنا لا اقصد ذلك ابدا وفقك الله

أنا ما عرفت تطبيق الكود و قد اشرت الى اني عليمي كودات الموديول غشيم فيها و الله

ثانيا ما اريده هو على مستوى السجل الواحد

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

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

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

ثم حقل المعدل على ان يعمل على وضع المعدل للقيم بدون الصفر

و اعتذر لك اعتذار شديد اذا فهمتني بغير ما اقصد وفقك الله

#8

أخي العزيز .. ولا يهمك

تعديل في الدالة لمنع بعض المشكلات

Function GetAvg(a1, a2, a3, a4, a5) As Double

Dim Items As Byte

If Nz(a1) <> 0 Then Items = 1

If Nz(a2) <> 0 Then Items = Items + 1

If Nz(a3) <> 0 Then Items = Items + 1

If Nz(a4) <> 0 Then Items = Items + 1

If Nz(a5) <> 0 Then Items = Items + 1

If Items <> 0 Then

GetAvg = CDbl((Nz(a1) + Nz(a2) + Nz(a3) + Nz(a4) + Nz(a5)) / Items)

Else

GetAvg = 0

End If

End Function

طريقة الإستخدام:

المعدل:GetAvg(a1,a2,a3,a4,a5)

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

تحياتي

#9

وضعت الكود في المدول

و بعد ذلك نقلت المعدل:GetAvg(a1,a2,a3,a4,a5)

في الاستعمال كحقل فاعطاني رسالة خطأ

اريد اعرف بعد وضع الكود في المودول كيف يتم وضع المعدل:GetAvg(a1,a2,a3,a4,a5)

في الاستعلام

#10

سامحونا نتعبكم معانا

هذا مثال على الذي اريده

وضعت الجدول و الاستعلام و النموذج

شكرا مقدما

zx.zip

#11

السلام عليكم

zx.zip

#12

أخي أبو هادي شكرا من الأعماق

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

لا يسعني الا الدعاء لك و شكرك و لا تعلم كم من راحة اشعر بها بنتهاء مرحلة من القلق و التفكير

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

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