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

حساب المدة بين تاريخين مع إهمال أيام الإجازة ( الخميس والجمعة )

بدأه حسان بشير في 16 فبراير 2012 · 7 رد · 2,130 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الإخوة الكرام ..

السلام عليكم ورحمة الله وبركااته ،،، وبعد :

أريد أن أحسب عدد أيام فترة محددة مع إهمال يومي الخميس والجمعة في الحساب .

بمعنى أن لدي حقلين أولهما ( من تاريخ ) والثاني ( إلى تاريخ ) يظهر تحتهما حقل تظهر فيها نتيجة عدد الأيام بدون حساب أيام الحميس والجمعة .

كيف يمكنني ذلك مشكورين ؟

سبحان الله وبحمده سبحان الله العظيم

#2

انظر المثال

enddate.rar

#3
KARIMSOFT كتب:

انظر المثال

أخي الكريم : كريم سوفت .

أشكرك على التفاعل والمثال الرائع ( في فكرته ) لكنه لم يعمل معي .

لو تكرمت علينا بشرح الآلية وحلقة التكرار في الكود مشكوراً مأجورا.

سبحان الله وبحمده سبحان الله العظيم

#4

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

#5
KARIMSOFT كتب:

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

أشكرك أخي على التواصل ، ولكن المثال لا يعمل معي ، هل لأن نسختي 2010 ؟

وأرجوا التكرم بشرح الكود حق حلقة التكرار ، أما الآلية فهي واضحة جداً .

الشكر مجدداً .

سبحان الله وبحمده سبحان الله العظيم

#6
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Label4.Text = funGetEndDate(DateTimePicker1.Value, NumericUpDown1.Value)
    End Sub
    Private Function funGetEndDate(ByVal dStartDate As Date, ByVal nNumberAddDays As Integer) As Date
        dStartDate = dStartDate.AddDays(-1) '
        Dim nTotalAddDays As Integer = 0 'عدد الايام المضافة الي تاريخ البدء
        For i As Integer = 1 To nNumberAddDays ' تكرر الحلقة حتي الوصول لعدد الايام المطلوبه
            If DateAndTime.DatePart("w", dStartDate.AddDays(nTotalAddDays), Constants.vbSaturday, Constants.vbFirstJan1) = 5 Or _
                DateAndTime.DatePart("w", dStartDate.AddDays(nTotalAddDays), Constants.vbSaturday, Constants.vbFirstJan1) = 6 Then
                'DatePart وظيفتها معرفة اليوم مثلا الخميس  
                i = i - 1 'اذا توافق احد اليومان قم بارجاع العدد
            End If
            nTotalAddDays = nTotalAddDays + 1 ' اضافة يوم
        Next i
        Return dStartDate.AddDays(nTotalAddDays) ' اضافة الايام الي تاريخ البدء
    End Function
1
#7
KARIMSOFT كتب:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Label4.Text = funGetEndDate(DateTimePicker1.Value, NumericUpDown1.Value)
    End Sub
    Private Function funGetEndDate(ByVal dStartDate As Date, ByVal nNumberAddDays As Integer) As Date
        dStartDate = dStartDate.AddDays(-1) '
        Dim nTotalAddDays As Integer = 0 'عدد الايام المضافة الي تاريخ البدء
        For i As Integer = 1 To nNumberAddDays ' تكرر الحلقة حتي الوصول لعدد الايام المطلوبه
            If DateAndTime.DatePart("w", dStartDate.AddDays(nTotalAddDays), Constants.vbSaturday, Constants.vbFirstJan1) = 5 Or _
                DateAndTime.DatePart("w", dStartDate.AddDays(nTotalAddDays), Constants.vbSaturday, Constants.vbFirstJan1) = 6 Then
                'DatePart وظيفتها معرفة اليوم مثلا الخميس  
                i = i - 1 'اذا توافق احد اليومان قم بارجاع العدد
            End If
            nTotalAddDays = nTotalAddDays + 1 ' اضافة يوم
        Next i
        Return dStartDate.AddDays(nTotalAddDays) ' اضافة الايام الي تاريخ البدء
    End Function

بارك الله فيك ..

هكذا الإجابات الرائعة تنبع من القلوب الطيبة .

أعدك أن أدعوا لك في ظهر الغيب .

سبحان الله وبحمده سبحان الله العظيم

#8

اكرمك الله

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…