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

طلب كود عدم تكرار سجل بشرط

بدأه بوجهاد في 2 أغسطس 2010 · 7 رد · 1,575 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

يوجد في المرفق قاعدة بيانات لتسجيل وقت الدخول المطلوب :

ماهو الكود الذي عند ادخال الموظف رقمة مرتين ولم يمضي عليه مدة الوقت المسجل في الجدول مثلا 9 ساعات يعطي رسالة انه تم تسجيل من قبل الموظف

14.rar

#2

أخي الكريم،

يمكن استخدام كود مثل التالي:

Private Sub sNameIn_BeforeUpdate(Cancel As Integer)
    Dim datLastCheckIn As Date
    Dim lngHoursCount As Long

    datLastCheckIn = DMax("sTimeIn", "tblTimeIn", "sNameInOut = '" & sNameIn.Column(0) & "'")
    lngHoursCount = DLookup("[عدد ساعات العمل]", "tblName", "sNumber = '" & sNameIn.Column(1) & "'")
    If DateDiff("h", datLastCheckIn, Now()) <= lngHoursCount Then
        MsgBox "تم تسجيل هذا العامل قبل وقت أقل أو يساوي عدد ساعات العمل", vbExclamation, "تسجيل مكرر"
        Cancel = True
        Me.Undo
    Else
        Me.sTimeIn = Now()
    End If
End Sub

وتوضيحه كالتالي:

datLastCheckIn: وقت آخر تسجيل للعامل في جدول الحضور

lngHoursCount: عدد ساعات العمل لهذا العامل من جدول الأسماء

DateDiff("h", datLastCheckIn, Now())

: الفرق بالساعات بين آخر تسجيل والوقت الحالي

والله أعلم.

14.rar

#3

شكرا لك اخ احمد فعلا هذا هو المطلوب لكن !!

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

شاهد المرفق ..............

14-1.rar

#4

أسهل طريقة لذلك هي الطريقة المباشرة: لا تضف حقلاً للمغادرة، وإنما اجعل جدول الحضور والانصراف جدولاً واحداً بحقل للتمييز بين الحضور (مثلاً 0)، وبين الانصراف (مثلاً 1)، والباقي يبقى كما هو.

من أجل هذا الحل، هناك تعديل طفيف على الكود الأول، ففي شاشة الحضور نستعلم عن آخر وقت حضور (حقل sTypeInOut = 0)، وفي شاشو الانصراف نستعلم عن آخر وقت انصراف (حقل sTypeInOut = 1)، من أجل التأكد من عدم التكرار... كل شيء آخر كما هو في كود التأكد.

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

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

كل ذلك منفذ في الملف المرفق، فأرجو الاطلاع عليه وتفحصه... والله أعلم.

14-1.rar

تم تعديل هذه المشاركة بواسطة أحمد مبارك الحيقي في 2 أغسطس 2010 في 18:02

#5

ممتاز اخ احمد +1

لكن باقي شرط واحد وهو انه بما ان الموظف سجل خروج

يسمح له بتسجيل الدخول مرة ثانية في اي وقت .

لو ان الموظف هرب من العمل ولم يسجل خروج وفي اليوم التالي سجل دخول وخروج فكيف يكون الحساب في هذه الحالة ؟

تم تعديل هذه المشاركة بواسطة بوجهاد في 2 أغسطس 2010 في 16:56

#6

تم تعديل المرفق السابق من أجل تصحيح تعامل الاستعلام الجدولي مع أكثر من يوم: الآن يظهر كل يوم في سطر مستقل...

#7
أحمد مبارك الحيقي كتب:

تم تعديل المرفق السابق من أجل تصحيح تعامل الاستعلام الجدولي مع أكثر من يوم: الآن يظهر كل يوم في سطر مستقل...

فعلا هذا المطلوب لكن باقي مشكلة وهي ان الموظف لا يستطيع تسجيل دخول مرة ثانية في نفس اليوم .

فالمفروض بما ان الموظف سجل خروج تعطى له الصلاحية للدخول مرة ثانية في نفس اليوم

#8

للرفع

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