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

جمع الحقول النصية غير الفارغة

بدأه أبو لميس في 13 سبتمبر 2012 · 5 رد · 554 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

لدى 45 عمودا نصيا

بعضها فارغ

و بعضها به بيانات

استخدمت المعادلة التالية للحصول على عدد الحصص للمدرس فى الأسبوع

cc1: IIf(IsNull([sun1]);0;1)+IIf(IsNull([sun2]);0;1)+IIf(IsNull([sun3]);0;1)+IIf(IsNull([sun4]);0;1)+IIf(IsNull([sun5]);0;1)+IIf(IsNull([sun6]);0;1)+IIf(IsNull([sun7]);0;1)+IIf(IsNull([sun8]);0;1)+IIf(IsNull([sun9]);0;1)+IIf(IsNull([mon1]);0;1)+IIf(IsNull([mon2]);0;1)+IIf(IsNull([mon3]);0;1)+IIf(IsNull([mon4]);0;1)+IIf(IsNull([mon5]);0;1)+IIf(IsNull([mon6]);0;1)+IIf(IsNull([mon7]);0;1)+IIf(IsNull([mon8]);0;1)+IIf(IsNull([mon9]);0;1)

و هذه تجمع الحصص فى يومي الأحد و الإثنين

ثم معادلة أخرى لجمع بقية الأيام

cc2: IIf(IsNull([tu1]);0;1)+IIf(IsNull([tu2]);0;1)+IIf(IsNull([tu3]);0;1)+IIf(IsNull([tu4]);0;1)+IIf(IsNull([tu5]);0;1)+IIf(IsNull([tu6]);0;1)+IIf(IsNull([tu7]);0;1)+IIf(IsNull([tu8]);0;1)+IIf(IsNull([tu9]);0;1)+IIf(IsNull([wed1]);0;1)+IIf(IsNull([wed2]);0;1)+IIf(IsNull([wed3]);0;1)+IIf(IsNull([wed4]);0;1)+IIf(IsNull([wed5]);0;1)+IIf(IsNull([wed6]);0;1)+IIf(IsNull([wed7]);0;1)+IIf(IsNull([wed8]);0;1)+IIf(IsNull([wed9]);0;1)+IIf(IsNull([thu1]);0;1)+IIf(IsNull([thu2]);0;1)+IIf(IsNull([thu3]);0;1)+IIf(IsNull([thu4]);0;1)+IIf(IsNull([thu5]);0;1)+IIf(IsNull([thu6]);0;1)+IIf(IsNull([thu7]);0;1)+IIf(IsNull([thu8]);0;1)+IIf(IsNull([thu9]);0;1)

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

cc: nz([cc1])+nz([cc2])

المشكلة أن الناتج يحتسب أيضا الحقول الفارغة ضمن المجموع

فلا يعطى العدد الصحيح لحصص المدرس فى أسبوع

بل يعطى ناتج 45 دائما

و هو العدد الكلى للحصص فى الأسبوع فارغة أو غير فارغة

كيف يكون الحل؟

جزاكم الله خيرا

#2

استخدم الدالة

val

#3

دالة val

تستخدم لتحويل القيمة النصية إلى رقمية

لكن قيمة الخلية هنا لا تصلح للتحويل لرقمية

لأنها اسم فصل هكذا

1/1

2/1

3/1

1/2

2/2

3/2

و هكذا

#4

الحمد لله

هدانى الله للحل

−1
#5

السلام عليكم

الله يهديك دااااااائماً ,,,,, للحل , ولكن اخي الكريم الا تعتقد ان هذه انانية منك لعدم ذكر الحل !!؟

الله يهدينا جميعاً إن شاءالله ,,,,,,,,,

#6

نعم

لكن لم يطلب الحل أى أحد

و مع ذلك

ففكرة الحل كالتالى

جعلت طول الحقل المشتمل على اسم الفصل = 3 أو هو كذلك منذ البداية

لأن اسم الفصل لدينا لا يتعدى طوله 3

ثم استخدمت دالة len لقياس عدد الأحرف

مثلا يوم الأحد

جمعت أطوال حقول حصص يوم الأحد كلها

ثم قسمت الناتج على 3

يعطينا عدد حصص يوم الأحد

rrr1: (nz(Len(Trim([sun1])))+nz(Len(Trim([sun2])))+nz(Len(Trim([sun3])))+nz(Len(Trim([sun4])))+nz(Len(Trim([sun5])))+nz(Len(Trim([sun6])))+nz(Len(Trim([sun7])))+nz(Len(Trim([sun8])))+nz(Len(Trim([sun9]))))/3

واستخدمت دالة trim

لحذف أية فراغات فى اسم الفصل

فعلت ذلك مع حقول بقية الأيام

ثم جمعتها كلها هكذا

Htot: [rrr1]+[rrr2]+[rrr3]+[rrr4]+[rrr5]

و جاءت النتائج صحيحة و دقيقة جدا

هكذا كان الحل

لا أدرى لو كان طول اسم الفصل أكبر من 3

مثلا

12/3

لحسن الحظ أن هذا غير موجود حاليا بالمدرسة

شكرا لك

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