اذهب الي المحتوي
أوفيسنا

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


monm

الردود الموصى بها

لاحظ ان تخلفات الطلاب إذا كانت 30 يوم منفصلة يفصل الطالب ولكن إذا غاب 15 يوم متصلة يفصل الطالب

السجل الثانى التجميع الكلى كان 30 وبالتالى إذا كان العدد 30 يكتب (فصل) 

السجل الثالث به المشكلة  الاعداد متصلة وعددها  15 مفروض  يكتب (فصل ) كيف يتم ذلك 

الغياب_(3).accdb

رابط هذا التعليق
شارك

السلام عليكم 

عزيزي اضفت حقل جديد باسم سنة جنب حقل شهر اكتب سنة مناسبة  لحقل شهر،  مثلا يناير من سنة 2018 ام من 2019، وجعلت ادخال شهور من قائمة منسدلة لتجنب اختلاف في اسماء شهور.

و ثانيا اكمل رقم قومي لان اغلب خانات رقم قومي فارغة و هذا ضروري جدا ، ثم ارفع الملف حتى بتم تعديل عليه.

ملحوظة: سبب حقل سنة لمعرفة عدد ايام شهر قبل حساب غياب متتالي ليس كما في نموذج او جدول جميع شهور 31 يوما على سبيل مثال لو غاب الطالب تاريخ 27،26،25 من شهر فبراير و من 1 الى 12 من شهر مارس هذا يعتر 15 يوم غياب متتالي ولكن اصفار في 29 و 30 و 31 الموجود في شهر فبراير يعني حضور!! و يقطع تسلسل غياب لهذا سبب علينا تكوين تاريخ، سنته من حقل سنة و شهره من شهر و يومه واحد، ثم  برمجة حساب غياب متتالي ينتقل الى 1 مارس بعد 28 من فبراير مباشرا و تجاهل اصفار 29 و 30 و 31  و هكذا

 

الغياب_(3).zip

 

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

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

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

و  لمنع تكرار تلك الخطاء قمت باضافة كود للايام 29،30،31 شهر لقبول تسجيل غياب حسب ايام شهر فقط.

TowDatabase.zip

 

  • Like 1
رابط هذا التعليق
شارك

11 ساعات مضت, monm said:

شكرا كثيرا للأخ العزيز ابو عارف 

شكر لله

11 ساعات مضت, monm said:

المهم كود جمع الايام المتصلة ارجو الشرح حتى نتعلم من سيادتك

حاضر ساشرح الكود بقدر مسنطاع رغم  انني لا استحسن شروحات بشكل مطلوب

rst.recordset معروف هو مجموعة سجلات جدول absent على معايير محددة

(0)rst ارجاع قيمة الموجودة في عمود الاول مجموعة سجلات و (1)rst في عمود الثاني و هكذا

MonthNum = rst!shaher

تعين قيمة متغير MonthNum هو قيمة حقل الشهر علما بان غيرت تنسيق حقل الشهر من نص الى رقم

Dt = DateSerial(rst!YR, MonthNum, 1)

تعين قيمة متغير Dt تاريخ، سنة من حقل YR و شهر من shaher و يوم 1

EachMonth = DateDiff("d", Dt, DateAdd("m", 1, Dt))

تعين قيمة متغير EachMonth حساب عدد ايام بين DT و DT+شهر، مثلا 1/سبتمبر/2018 و 1/اكتوبر/2018

For i = 1 To EachMonth

حلقات تكرار متغير  (i) حسب عدد ايام شهر تبدء من 1 لان عمود 0 "NUm" لا علاقة لنا به

If rst(i) > 0 Then

اذا كان قيمة عمود الثاني اي اول يوم الشهر اكثر من 0 ، 

AbsCount = AbsCount + rst(i)

القيمه يجمع مع متغير AbsCount  (هنا يحسب غياب متواصل) و الا ، يقرأ قيمة AbsCount اذا وصلت اكثر او يساوي 15 يقوم بوضع القيمة في مربع نص اسفل نموذج ثم Exit Sub و اذا كان اقل من 15 ، يغير قيمة AbsCount الى 0 ثم ينتقل  الى عمود الثاني و هكذا حتى آخر شهر و حلقة تكرارية الاخيرة لـ i 

ثم ينتقل الى سجل التالي حتى نهاية مجموعة سجلات.

 

 

 

 

  • Like 1
رابط هذا التعليق
شارك

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information