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

كيف يتم حساب خدمة الموظف

مغلق
بدأه الشهاب الحارق في 17 مارس 2005 · 8 رد · 788 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

منذ فترة ليست بالقصيرة كنت أبحث عن هذه الطريقة وهي حسبة خدمة الموظف بالسنوات والاشهر و الايام

مثال ذلك لدي موظف يعمل منذ سنوات ولدي في قاعدة البيانات عدد أيام الموظف لنقل 5000 يوم

الآن كيف تتم الحسبه لإستخراج عدد السنوات & الشهور & الآيام ؟

ويكون الناتج مثلاً 11 سنة و 5 أشهر و 10 أيام ...

وجزاكم الله خير .

في المثال يتضح المقال

#2

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

        Dim StDate As DateTime
        Dim DaysCount As Integer
        Dim oline As String
        Dim yr, mon, dy, hr, min As Integer
        DaysCount = 5000
        StDate = Now.AddDays(-DaysCount)

        Dim n As DateTime = Now
        
        yr = Int(DateDiff(DateInterval.Year, StDate, n))
        StDate = StDate.AddYears(CInt(yr))
        mon = Int(DateDiff(DateInterval.Month, StDate, n))
        StDate = StDate.AddMonths(CInt(mon))
        If StDate > n Then
            StDate = StDate.AddMonths(-1)
            mon -= 1
        End If
        dy = Int(DateDiff(DateInterval.Day, StDate, n))
        StDate = StDate.AddDays(CInt(dy))
        If StDate > n Then
            StDate = StDate.AddDays(-1)
            dy -= 1
        End If
        hr = Int(DateDiff(DateInterval.Hour, StDate, n))
        StDate = StDate.AddHours(CInt(hr))
        If StDate > n Then
            StDate = StDate.AddHours(-1)
            hr -= 1
        End If
        min = Int(DateDiff(DateInterval.Minute, StDate, n))

        oline = Nothing
        If yr >= 1 Then oline = yr.ToString & " Yrs, "
        If mon >= 1 Then oline += mon.ToString & " Mons, "
        If dy >= 1 Then oline += dy.ToString & " Dys, "
        If hr >= 1 Then oline += hr.ToString & " Hrs, "
        If min >= 1 Then oline += min.ToString & " Mins, "


        TextBox1.Text = oline

والله أجل وأعلم

اللهم اغفر لي و لوالدي و للمؤمنين يوم يقوم الحساب

لا إله إلا الله عدد ما كان و عدد ما يكون و عدد الحركات و السكون

#3

السلام عليكم

أحسن الله إليك أخي , ماشاء الله عليك دائماً سباق .

السلام عليكم

في المثال يتضح المقال

#4

لا تنسونا من دعوة في ظهر الغيب

اللهم اغفر لي و لوالدي و للمؤمنين يوم يقوم الحساب

لا إله إلا الله عدد ما كان و عدد ما يكون و عدد الحركات و السكون

#5

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

هذه الطريقه مباشره وبدون استخدام اي داله

على افتراض ان عدد الايام جاهز وهو 5000 يوم

1- 5000/30 = عدد الاشهر ...........ضع علامة القسمه التي تهمل الباقي (\)

2- عدد الاشهر / 12=عدد السنوات...====================== : هذه السنوات

3- الاشهر =(عدد الاشهر-(عدد السنوات * 12)) : هذه الاشهر

الان اصبح لدينا كم شهر وكم سنه ....بقي كم يوم

4- عدد الايام = 5000-(عدد الاشهر *30) : هذه الايام

طبعا طريقه بسيطه وبرمجتها مباشره ولكن يجب الانتباه الى اننا سنفترض ان الاشهر جميعها 30 يوم

الكود بسيط جدا ولا يستدعي وضعه هنا فهو مباشر

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

تم تعديل هذه المشاركة بواسطة ابوعبدالملك في 18 مارس 2005 في 18:17

------------------وما توفيقي إلا بالله--------------------

إذا كنت بالله مستعصما---------فماذا يضيرك كيد العبيد

#6

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

هذا رابط الموضوع

/index.ph...1&st=&p=entry

------------------وما توفيقي إلا بالله--------------------

إذا كنت بالله مستعصما---------فماذا يضيرك كيد العبيد

#7

السلام عليكم

جزاك الله خير أخي أبوعبدالملك على هذه المداخلة

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

ممكن تنظر أين الخلل و من ثم إصلاحه (رغم أني أتوقع أن الكود كله خلل)

    Private Function CalculateEmployeeServices(ByVal Value As Integer) As String
        Dim Year, Month, Day As Integer
        Dim Result As String
        Month = Value \ 30
        Year = Month \ 12
        Month = (Month - (Year * 12))
        Day = Value - (Month * 30)
        Result = "  عدد السنوات " & Year.ToString & " عدد الشهور " & _
        Month.ToString & " عدد الأيام " & Day.ToString
        Return Result
    End Function

و جزاك الله خير

في المثال يتضح المقال

#8

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

كذلك اعتذر عن عمل الرابط فهو قديم ويبدوا انه لا يعمل

  Private Function CalculateEmployeeServices(ByVal Value As Integer) As String
        Dim Year, Month, allmonth, Day As Integer
        Dim Result As String
        allmonth = Value \ 30
        Year = allmonth \ 12
        Month = (allmonth - (Year * 12))
        Day = Value - (allmonth * 30)
        result = "  عدد السنوات " & Year.ToString & " عدد الشهور " & _
        Month.ToString & " عدد الأيام " & Day.ToString
        Return result
    End Function

------------------وما توفيقي إلا بالله--------------------

إذا كنت بالله مستعصما---------فماذا يضيرك كيد العبيد

#9

السلام عليكم

شكراً جزيلاً أخي أبوعبدالملك

وهذا الكود بعد التنقيح والتعديل للقيم المعروضة لا للنصوص البرمجية .

Public Shared Function CalculateServices(ByVal Value As Integer) As String
        Dim Year, Mon, allmonth, dy As Integer
        Dim YearCount, MonthCount, DayCount, Result As String
        allmonth = Value \ 30
        Year = allmonth \ 12
        Mon = (allmonth - (Year * 12))
        dy = Value - (allmonth * 30)

        Result = Nothing
        If Year >= 1 Then
            If Year < 10 Then YearCount = Year.ToString & " سنوات, "
            If Year > 10 Then YearCount = Year.ToString & " سنة, "
            If Year = 2 Then YearCount = " سنتان, "
            If Year = 1 Then YearCount = " سنة واحدة, "
        End If

        If Mon >= 1 Then
            If Mon < 10 Then MonthCount = Mon.ToString & " أشهر, "
            If Mon > 10 Then MonthCount = Mon.ToString & " شهر, "
            If Mon = 2 Then MonthCount = " شهران, "
            If Mon = 1 Then MonthCount = " شهر واحد, "
        End If

        If dy >= 1 Then
            If dy < 10 Then DayCount = dy.ToString & " أيام"
            If dy > 10 Then DayCount = dy.ToString & " يوم"
            If dy = 2 Then DayCount = " يومان "
            If dy = 1 Then DayCount = " يوم واحد"

        End If
        Result = YearCount + MonthCount + DayCount
        Return Result
    End Function

في المثال يتضح المقال

هذا الموضوع مغلق.

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