تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
سؤال كيفية احتساب ايام اجازة
#1
السلام عليكم ورحمة الله وبركاته
اريد كود فى 
Visual Studio 2012
بداية الاجازة DateTimePicker1
عدد الايام textbox1
تاريخ نهاية الاجازة   DateTimePicker2
ما اريده هو
يستثنى ايام الجمعه والسبت
وايضا يقرأ ايام العطلات الرسمية من جدول اخر
فلو فرضا
البداية  الاربعاء 13/1/2021
وعدد الايام 5 ايام
ويوم الاحد 17/1/2021 والاثنين 18/1/2021 اجازة رسمية
يظهر لى
فى نهاية الاجازة يوم 22/1/2021
باختصار اريده يقرأ من جدول الاجازات وهو عبارة عن
date,nam
وشكرا لسعة صدركم
الرد
تم الشكر بواسطة: أسعد , أسعد
#2
السلام عليكم ورحمة الله
حقيقة انا ابرمج بالفيجوال وليس بالسي شارب 
بس حبيت اساعدك
أولا اعمل فنكشن تمرر لها تاريخي بداية ونهاية الاجازة تستخرج لك عدد الايام بدون عطلة الاسبوع
مثل هذا الكود
وبعد ذلك تجلب عدد ايام الاجازات وتجمعهم مع بعض
PHP كود :
public static int GetBusinessDays(DateTime startDayDateTime endDay)
{
 
   var today DateTime.Today;
 
   var weekend = new[] { DayOfWeek.SaturdayDayOfWeek.Friday };
 
   var businessDays from d in Enumerable.Range(0, (endDay.Date startDay.Date).Days 1)
 
                      where !weekend.Contains(day.DayOfWeek)
 
                      select today.AddDays(d);

 
   return businessDays.Count();

الرد
تم الشكر بواسطة: أسعد , أسعد , ابراهيم ايبو
#3
(26-01-21, 08:16 AM)moosa_alabri كتب : السلام عليكم ورحمة الله
حقيقة انا ابرمج بالفيجوال وليس بالسي شارب 
بس حبيت اساعدك
أولا اعمل فنكشن تمرر لها تاريخي بداية ونهاية الاجازة تستخرج لك عدد الايام بدون عطلة الاسبوع
مثل هذا الكود
وبعد ذلك تجلب عدد ايام الاجازات وتجمعهم مع بعض
PHP كود :
public static int GetBusinessDays(DateTime startDayDateTime endDay)
{
 
   var today DateTime.Today;
 
   var weekend = new[] { DayOfWeek.SaturdayDayOfWeek.Friday };
 
   var businessDays from d in Enumerable.Range(0, (endDay.Date startDay.Date).Days 1)
 
                      where !weekend.Contains(day.DayOfWeek)
 
                      select today.AddDays(d);

 
   return businessDays.Count();

ممكن توضح لى الكود فى مثال لو تكرمت
الرد
تم الشكر بواسطة: أسعد , ابراهيم ايبو
#4
يعطيك شرح مختصر وانت عليك التطبيق
طريقة 1 : بما أن كل دولة لها عطلها الرسمية فممكن تستعين بجدول خاص يضاف فيه العطل الرسمية مضاف إليه العطل الأسبوعية مكون من حقلين.
Name_dy نص
Date_dy تاريخ
اذا كان اليوم هذا كالجمعة والسبت عطلة أسبوعية على مدار السنة ..
يفضل ترك حقل date_dy فارغ بدون تاريخ.

الآن الاكواد يحتاج لك اكواد سرد عدد الأيام بين فترتين وهو كود سطر واحد فقط.
يجيب لك عدد الأيام بين تاريخين.
وكذلك
استخدام دواره بحث عن تاريخ كل يوم والتأكد من تواجدها بالجدول اذا كانت متواجدة لايتم عملية إضافة يوم إلى عدد ايام الاجازة..
الدوارة بالبداية سيكون قيمتها صفر مثلا كلما كان التاريخ متواجد في جدول الاجازت الرسمية " nothing "
اذا لم يكن متواجد..
يبحث عن العطل الرسمية الجمعة والسبت مثلا التي لا تحتوي على تاريخ .. ويتاكد من اسم هذا اليوم من خلال رقمه في الأسبوع  dayintheweek.



إبداء لرسم لنفسك فكرة تستطيع تطبيقها ولو كانت بدائية.


يحتاج لك اكواد
1- معرفة عدد ايام بين تارخين
2- معرفة رقم اليوم من خلال الاسم
3- كود استعلام عن تطابق تاريخ متواجد من قاعدة بيانات.



تختلف الطرق والنتيجة واحدة
وأنا قصدت أشرح بهذه الطريقة مش لأن فكرتك صعبة .. متواجدة في النت لو بحثت عليها كويس ..
U can search use English language in google.com

واعتذر عن مداخلتي الي سأعلمك  أكثر كيف تعتمد على تفكيرك مستقبلا..


كود



PHP كود :
Function FindDays(ByVal fromdate As DateByVal todate As Date)
 
       Dim AmountofDaysTaken As Integer 0
        If todate
.Date fromdate.Date Then Exit Function
 
       While fromdate.Date <= todate.Date
            Select 
Case fromdate.DayOfWeek.ToString()
 
               Case "Monday"
 
                   If mondaychk.Checked Then AmountofDaysTaken AmountofDaysTaken 1
                Case 
"Tuesday"
 
                   If tuesdaychk.Checked Then AmountofDaysTaken AmountofDaysTaken 1
                Case 
"Wednesday"
 
                   If wednesdaychk.Checked Then AmountofDaysTaken AmountofDaysTaken 1
                Case 
"Thursday"
 
                   If thursdaychk.Checked Then AmountofDaysTaken AmountofDaysTaken 1
                Case 
"Friday"
 
                   If fridaychk.Checked Then AmountofDaysTaken AmountofDaysTaken 1
                Case 
"Saturday"
 
                   If saturdaychk.Checked Then AmountofDaysTaken AmountofDaysTaken 1
                Case 
"Sunday"
 
                   If sundaychk.Checked Then AmountofDaysTaken AmountofDaysTaken 1
            End Select
            Debug
.Print(fromdate.Date " " todate.Date " " fromdate.DayOfWeek.ToString())
 
           My.Application.DoEvents()
 
           fromdate fromdate.AddDays(1)
 
       End While
 
       Return AmountofDaysTaken
    End 
Function 
الرد
تم الشكر بواسطة: ابراهيم ايبو



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم