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

كود يمنع تعارض تاريخين


إذهب إلى أفضل إجابة Solved by سعيد صواب,

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

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

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

مثلا/ احمد اخذ اجازة هذا الشهر من تاريخ 1/1/1436 إلى 20/1/1436 .. وقدم طلب للحصول على إجازة من تاريخ 17/01/1436 إلى 28/01/1436 وهكذا.

اريد في نموذج طلب الإجازة وعند امر الحفظ ان ينبهني بأن الموظف مازال في إجازة أو ان هناك تعارض.
كل التفاصيل موجودة بالنموذج "sss"

جربت استعلام اخذته من تجارب احد الأخوان ولكن لم يفيد حيث انه يطبقه على كل الموظفين.
وجزاكم الله خيرأ.

القاعدة مرفقة 

تعارض.rar

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

اشكرك على تجاوبك اخي رضوان ,,,

 

الموضوع هو نظام اجازات للموظفين  (( طلب إجازة ,,, تمديد إجازة ,,, مباشرة ,,  الخ .....ولكن لا أريد ان اكثر بالطلبات فعند احتياجي لطلب فأنا متأكد بأنكم لن تتأخروا بتقديم المساعدة.

 

مااريده في المثال المرفق بالتحديد في نموذج "sss" :

 

الا وهو عند القيام بإدخال اجازة لموظف ما ان لا يكون هناك تعارض في التواريخ حتى ولو بيوم واحد.

 

مثال محمد طلب اجازة من تاريخ      26/03/1436 إلى 05/04/1436   .

عاد محمد وقدم طلب إجازة من تاريخ 01/04/1436 إلى 10/04/1436             

هنا يوجد تعارض حيث ان اجازته الأولى لم تنتهي بعد . أريد تنبيه للموظف مدخل البيانات  بأن محمد مازال في اجازة .

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

هذا الطلب لو تم تأجيله فلا مانع حتى لا اثقل عليكم ولكني احسه مرتبط وربما تكون الشرطين بشرط واحد 

 

الطلب الثاني وهذا لم اذكره في طلبي السابق الا وهو   في حقل " dofacjoin"  في الجدول "vacsum" 

اريد ان اضع شرط هنا الا وهو كمثال :

اولا "dofacjoin" هذا الحقل يعني تاريخ  المباشرة الفعلية للموظف.

 

المثال : في نموذج "sss"

صالح قدم إجازة بتاريخ                           11/5/1436 وتنتهي في 25/5/1436 ..

 

رجع صالح بعد حين وقدم اجازة من تاريخ    11/7/1436 وتنتهي في  20/7/1436.

 

هنا لا يودجد تعارض ولكن اريد اضافة شرط الى المثال الأول الا وهو :

 

يجب الا يكون هناك تعارض ويجب ان يكون حقل " dofacjoin" مدخل فيه تاريخ المباشرة. 

 

ويكون شكل التنبيه بهذه الطريقة حتى توضح الصورة" الموظف مازال في إجازة أو أنه لم تعمل له مباشرة بعد"

 

اطلت ولكن لحاجتي لهذا الموضوع واتمنى ان تكون الفكرة وصلت.

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

  • 3 weeks later...

اخي الكريم وجدت هذا الكود أو الوحدة النمطية في أحد المنتديات  تخدم نفس طلبك جزاه الله الف خير من عملها ، لكن أخي لا أعرف كيف أضعها في برنامجك  وكلنا أمل من الأساتذة جزاهم الله الف خير العمل على وضعها حسب المطلوب في البرنامج أو حسب ما يرونه ليستفيد الجميع ، بارك الله في الجميع.

Public Module DateServices
    Public Structure SDateInterval
        Dim StartDate As Date    ' تاريخ بداية الفترة
        Dim EndDate As Date     ' تاريخ نهاية الفترة
    End Structure


    ' دالة الاختبار
    Public Function IntervalConflict(ByVal Period1 As SDateInterval, ByVal Period2 As SDateInterval) As Boolean
        If ((Period1.StartDate >= Period2.StartDate) And (Period1.StartDate <= Period2.EndDate)) Or _
                ((Period1.EndDate >= Period2.StartDate) And (Period1.EndDate <= Period2.EndDate)) Then
            Return True    ' تعارض
        Else
            Return False    ' لا يوجد تعارض
        End If
    End Function
End Module


Public Class Form1


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Period1 As SDateInterval
        Dim Period2 As SDateInterval


        ' القيم التالية للتجربة - يمكن قراءتها من مربعات نص أو غيرها
        Period1.StartDate = #10/1/2013#
        Period1.EndDate = #10/15/2013#
        Period2.StartDate = #10/13/2013#
        Period2.EndDate = #10/28/2013#


        If IntervalConflict(Period2, Period1) Then
            MsgBox("Conflicts")
        Else
            MsgBox("No conflict")
        End If
    End Sub
End Class
تم تعديل بواسطه أبـوخليل
سبب التعديل : لضبط عرض الكود
رابط هذا التعليق
شارك

  • أفضل إجابة

جزاكم الله كل الخير جميعا ,,,

 

افادني احد الاخوان جزاه الله واياكم بالخير ,,

 

ويتم ذلك من خلا تغيير الإستعلام واضافتة كنموذج فرعي لحساب التعارض ,, وبدون وحدة نمطية ولا غيرها .

 

بالإمكان اخفاء النموذج بعد ذلك ليصبح شكل النموذج اجمل ,,

 

 

اعتقد ان المرفق سيغني كثيرا عن الكلام,, واتمنى ان تعم الفائدة.

تعارض.rar

تم تعديل بواسطه آخر الأرض
رابط هذا التعليق
شارك

اخي  الفاضل اخر الارض . ممكن لو تكرمت شرح  كود تعارض تاريخين في مرفق اخي القعر

 

Private Sub dur11_AfterUpdate()
Me.vacsum_count.Requery
If Me.CountRQ >= 1 Then GoTo line22 Else GoTo line33
line22:
MsgBox "äØÇÞ ÇáÅÌÇÒÉ ãÓÌá ÓÇíÞÇð", vbCritical + vbOKOnly, "ÊäÈíå"
Undo
Exit Sub
line33:
Exit Sub
End Sub
تم تعديل بواسطه حسين العربي
رابط هذا التعليق
شارك

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

 

الأخ حسين العربي لا يوجد مرفق للأخ القعر ولكن ,,, اذا كنت تقصد الكود الذي ارفقته فشرحه موجود في قاعدة البيانات  المرفقة في النموذج (( sss))  وهو كاتالي :

 

ادخل على عرض التصميم للنموذج ,,  ستجد عنصر CountRQ  في نموذج sss  وعنصر conter في النموذج الفرعي vacsum_count:

 

اعتقد انها كفيلة بتوضيح الموضوع ,,

 

وحاضرين لو احتجت توضيح اكثر استاذ حسين ..

 

دمتم بخير 

 

 

 

 

 

hussain.rar

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

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

 

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

https://msdn.microsoft.com/en-us/library/69whc95c(v=vs.80).aspx

 

 فأصبحت استخدمة كأي شرط من شروط الأداة If .

 

عل خبراء المنتدى يفيدونا في حال توفر شرح  اكثر وضوح .

 

اسف على التأخير فلم انتبه لسؤالك.

 

 

 

وفقنا الله واياكم ..

تم تعديل بواسطه آخر الأرض
رابط هذا التعليق
شارك

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