اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

قام بنشر

السلام عليكم 

لو سمحتم عندي مشكة في دالة DLOOKUP باكثر من شرط عند البحث اريد شرطين (UNIT = UNIT) و (ShiftType = ShiftType) لكي اجد قيمة ساعة البداية وساعة النهاية

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

وشكرا لكم 

MO.rarFetching info...

قام بنشر (معدل)

وعليكم السلام ..

بالنسبة لسؤالك الاول ..الدالة بتشتغل معاك كويس ومافيهاش مشكلة

الشطر الثاني من السؤال ... يمكنك عمل مربع نص بأسم Ds ومربع نص ثاني باسم De ويمكنك ان تخفيهما في النموذج ..وتجعل مصد السجلات لهما هكذا

Ds

=DLast("[strDate]";"[TblLeaveRegistrationOrdinary]";"[Emp]='" & [Emp] & "'")

De

=DLast("[EndDate]";"[TblLeaveRegistrationOrdinary]";"[Emp]='" & [Emp] & "'")

وفي حدث بعد التحديث للحقل DateShift في النموذج تضع الكود التالي

Private Sub DateShift_AfterUpdate()
If Me.DateShift >= Me.Ds And Me.DateShift <= Me.De Then
MsgBox "الموظف في اجاؤة"
DoCmd.CancelEvent
Me.DateShift = ""
End If
End Sub

 

تم تعديل بواسطه Eng.Qassim
  • Like 1
قام بنشر
  في 24‏/12‏/2022 at 19:14, Eng.Qassim said:

وعليكم السلام ..

بالنسبة لسؤالك الاول ..الدالة بتشتغل معاك كويس ومافيهاش مشكلة

الشطر الثاني من السؤال ... يمكنك عمل مربع نص بأسم Ds ومربع نص ثاني باسم De ويمكنك ان تخفيهما في النموذج ..وتجعل مصد السجلات لهما هكذا

Ds

=DLast("[strDate]";"[TblLeaveRegistrationOrdinary]";"[Emp]='" & [Emp] & "'")

De

=DLast("[EndDate]";"[TblLeaveRegistrationOrdinary]";"[Emp]='" & [Emp] & "'")

وفي حدث بعد التحديث للحقل DateShift في النموذج تضع الكود التالي

Private Sub DateShift_AfterUpdate()
If Me.DateShift >= Me.Ds And Me.DateShift <= Me.De Then
MsgBox "الموظف في اجاؤة"
DoCmd.CancelEvent
Me.DateShift = ""
End If
End Sub

 

Expand  

@Eng.Qassimشكرا جدا لحضرتك علي الرد بالنسبه للدالة عند تسجيل كل المجموعات تعطي أرقام خطا اول التصميم كان المجموعات باللغه العربية قولت ممكن السبب منها وغيرتها للانجليزي وما زال الخطأ ممكن حضرتك لو تجرب كل المجموعات هتلاقي معظم اللي شفته بيبدأ من الساعه ٧ أو ٧.٣٠ لا يظهر ومعظم الأرقام خطا

انا اسف جدا على الازعاج سامحني

  • تمت الإجابة
قام بنشر (معدل)
  في 24‏/12‏/2022 at 19:55, MO87 said:

لو تجرب كل المجموعات هتلاقي معظم اللي شفته بيبدأ من الساعه ٧ أو ٧.٣٠ لا يظهر ومعظم الأرقام خطا

Expand  

طيب جرب الان بالنسبة للخطأ الحاصل

 

 

 

MO.rarFetching info...

تم تعديل بواسطه Eng.Qassim
  • Like 1
قام بنشر
  في 25‏/12‏/2022 at 11:12, Eng.Qassim said:

طيب جرب الان بالنسبة للخطأ الحاصل

 

 

 

MO.rar 51.79 kB · 4 downloads

Expand  

الف مليون شكرا لحضرتك @Eng.Qassim  انا كنت حليت المشكلة بعمل نموذج فرعي ياخد القيمة منه مباشرة

جزاك الله خير  ده مشروع خيري وفي مشكلة ثانية سوف ارفقها فس سوال جديد والف شكرا لكرمك 

  • Like 1
قام بنشر

@Eng.Qassimاسف 

  في 24‏/12‏/2022 at 19:14, Eng.Qassim said:

وعليكم السلام ..

بالنسبة لسؤالك الاول ..الدالة بتشتغل معاك كويس ومافيهاش مشكلة

الشطر الثاني من السؤال ... يمكنك عمل مربع نص بأسم Ds ومربع نص ثاني باسم De ويمكنك ان تخفيهما في النموذج ..وتجعل مصد السجلات لهما هكذا

Ds

=DLast("[strDate]";"[TblLeaveRegistrationOrdinary]";"[Emp]='" & [Emp] & "'")

De

=DLast("[EndDate]";"[TblLeaveRegistrationOrdinary]";"[Emp]='" & [Emp] & "'")

وفي حدث بعد التحديث للحقل DateShift في النموذج تضع الكود التالي

Private Sub DateShift_AfterUpdate()
If Me.DateShift >= Me.Ds And Me.DateShift <= Me.De Then
MsgBox "الموظف في اجاؤة"
DoCmd.CancelEvent
Me.DateShift = ""
End If
End Sub

 

Expand  

بالنسبه لو الموظف متاح له أكثر من اجازة خلال العام

قام بنشر (معدل)
  في 29‏/12‏/2022 at 15:49, MO87 said:

بالنسبه لو الموظف متاح له أكثر من اجازة خلال العام

Expand  

ولهذا استخدمت Dlast ..فهي تأخذ اخر اجازة

يمكنك ان تستخدم هذا الكود ايضا

Private Sub DateShift_AfterUpdate()
Dim startDate As Date
Dim endDate As Date
Dim vacationDate As Date

startDate = DLast("[strDate]", "[TblLeaveRegistrationOrdinary]", "[Emp]='" & [emp] & "'")
endDate = DLast("[EndDate]", "[TblLeaveRegistrationOrdinary]", "[Emp]='" & [emp] & "'")
vacationDate = Me.DateShift

If vacationDate >= startDate And vacationDate <= endDate Then
    MsgBox "الموظف في اجازة"
    Me.DateShift = ""
End If
End Sub

 

تم تعديل بواسطه Eng.Qassim
قام بنشر

أقترح باستخدام DMax بدلا من DLast تفاديا لأخطاء ادخالات الموظفين، فـ DLast تأخذ القيم حسب ترتيب اضافتها للجداول.
والمعذرة لكم.

قام بنشر
  في 29‏/12‏/2022 at 19:09, AbuuAhmed said:

أقترح باستخدام DMax بدلا من DLast تفاديا لأخطاء ادخالات الموظفين، فـ DLast تأخذ القيم حسب ترتيب اضافتها للجداول

Expand  

كلامك صحيح استاذي @AbuuAhmed لكني افترضت ان ادخال التواريخ يومي او عامل Ascending للتاريخ

تبقى DMax  افضل تفاديا للاخطاء

احسنت استاذ

  • Like 1
قام بنشر
  في 29‏/12‏/2022 at 17:15, Eng.Qassim said:
Dim startDate As Date
Dim endDate As Date
Dim vacationDate As Date

startDate = DLast("[strDate]", "[TblLeaveRegistrationOrdinary]", "[Emp]='" & [emp] & "'")
endDate = DLast("[EndDate]", "[TblLeaveRegistrationOrdinary]", "[Emp]='" & [emp] & "'")
vacationDate = Me.DateShift

If vacationDate >= startDate And vacationDate <= endDate Then
    MsgBox "الموظف في اجازة"
    Me.DateShift = ""
End If
Expand  

تعطيني خطا الدالة في السابق كانت تعمل

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