شكرا للأخ سحاب علي مداخلته ، و سأحاول أيضا شرح الفكرة فيما يلي :
و طبعا الموضوع عرضة لافكار كثيرة و لكن ساشرح فكرة لتوضيح الطريقة ( طريقة التعامل مع الدوال و التأكد من الرصيد ) . مع ملاحظة أني كتبت الكود التالي سريعا و لم أجربه فعليا ( لتوضيح الفكرة فقط )
لنفرض أن الرصيد المتاح يسجل فى جدول الموظفين كاجمالي المسموح به لكل موظف.
و المستهلكات تسجل فى جدول الاجازات كتاريخ بداية و نهاية و منها علي النموذج تحسب عدد الايام المطلوب تسجيلها كأجازة ( مدة الاجازة )
ومدة الاجازة هي التي سنقوم باختبار هل الرصيد يسمح بها أم لا
txtnewRquest
هو مربع النص الذي يتم منه تسجيل مدة الاجازة فى جدول الاجازات سواء مباشرة بالكتابة فيه أو بالكود بعد تحديث تواريخ بداية و نهاية الاجازة علي النموذج
txtempId
هو كود الموظف علي النموذج
txtremaining مربع نص غير منضم يتم حساب المتبقي فيه بالكود ( قبل تسجيل الاجازة التي يتم اختبارها حاليا )
txtRassed مربع نص غير منضم يتم حساب الرصيد الاصلي فيه بالكود
و لدينا جدولان
الاول الموظفين و اسمه
tblemp
و به حقل الرصيد الكلي Total
و حقل كود الموظف empId
و جدول حركة الاجازات
tblVications
و به حقل المستهلك
used
و كود الموظف empId
بالاضافة الي توايخ الاجازة و لكن هي ليست موضوعنا هنا
و الكود ينفذ من زر أمر فى نموذج الاضافة الي جدول الاجازات
فاما يقوم باظهار رسالة برفض التسجيل لعدم وجود الرصيد ، أو يحسب لنا القيم و يضعها علي النموذج
و طبعا هذا لا يكفي لاتمام العمل و التسجيل ، و لكن فقط أردت توضيح النقطة المطلوبة
وان لم يكن الشرح التالي واضحا ، فأرجو أن يفي مثال الاخ سحاب بما تريد
Dim Rassed, used As Integer
Rassed = DLookup("[Total]", "tblemp", "[empId]=" & Me.txtempId)
used = DSum("[used]", "tblVications", "[empId]=" & Me.txtempId)
If (Rassed - used) < Me.txtnewRquest Then
MsgBox "No Rassed available"
Exit Sub
Else
Me.txtRassed = Rassed
Me.txtremaining = (Rassed - used)
MsgBox " Vications Can be Taken !! "
End If