في المثال المرفق هناك حقل لاٍدخال تاريخ الميلاد و حقل ثان خاص باٍدخال تاريخ بداية الخدمة,ما أريده طبعا رجاءا و ليس أمرا, هو اٍذا كان الفارق بين تاريخ الميلاد و تاريخ بداية الخدمة أقل من 18 سنة تظهر رسالة تنبيه تشير الى هذه الحالة.
طلب مساعد تتعلق بحساب التاريخ
الملف لايعمل.اعد ضغط الملف .
الملف سليم و مع ذلك أعيد تحميله
أخي biskra
هذا هو كود المقارنة الذي تريده
If DateDiff("y", date1, date2) < 18 Then
msgbox "لا يمكن توظيف شخص عمره أقل من 18 عاماً"
End Ifتم تعديل هذه المشاركة بواسطة مهند عبادي في 9 مايو 2004 في 02:33
أخي مهند جزاك الله خيرا على هذا الجواب.
أظن أن الحساب يعتمد على السنوات, هل يمكن تطويره ليحسب الفرق بالتاريخ الكامل أي بالسنة,الشهر و اليوم؟
بحمده تعالى تم الوصول الى الحل بواسطة الكود التالي
CODE
Private Sub date2_AfterUpdate()
If (Int((DateDiff("s", [date1], date2) / 31556952))) < 18 Then
MsgBox "لا يمكن توظيف شخص عمره أقل من 18 عاماً"
End Ifحسب الشرح ال\ي تحصلت من أحد المنتديات, العملية تعتمد على أساس الدقائق حتى يتم تجنب الخطأ المرتبط بالسنة الكبيسة و الحبيسة, هذا الكود بناءا على التجربة يعطي حسابا دقيقا بالتاريخ الكامل أي بالسنة , الشهر و اليوم, عكس الكود المقدم من الأستاذ مهند.
فقط لاحظت شيئا عند تجربة الكود و اٍن كان الأمر يخرج قليلا عن مجال الأكسس أن الكود يعتبر 18 سنة 0شهر 0 يوم أقل من 18 من 18 سنة,فهل هذا منطقي؟
لم أفهم عليك تماماً ما تقوله
ممكن تكتب مثال
المقصود من الملاحظة أنه في المثال الذي أرفقه اٍعتمادا على الكود الذي ذكرته أعلاه,أنه مثلا عند اٍدخال تاريخ الميلاد 21/10/1980 و تاريخ بداية الخدمة 21/10/1998 فاٍن رسالة التنبيه سوف تظهر مما يعني أن السن هو أقل من 18 سنة, لكن عندما نقوم بعملية حسابية بالقلم بطريقة تقليدية سوف تكون نتيجة طرح تاريخ الميلاد من تاريخ بداية الخدمة هي 18سنة 0 شهر و 0 يوم, فهل هذه النتيجة تفيد بأن السن هو أقل من 18 سنة
لا حظت ما يلي :
1/1/1980 - 1/1/1998 يعمل بشكل صحيح
1/3/1980 - 1/3/1998 خاطئ
21/10/1982 - 21/10/2000 يعمل بشكل صحيح
21/2/1982 - 21/2/2000 خاطئ
السبب هو وجود السنة الكبيسة في الشهر الثاني .. فإذا كانت محسوبة من ضمن المدة مثل 1/1/1980 - 1/1/1998 يعمل بشكل صحيح
هذا الموضوع مغلق.
