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

التعديل على ملف استخراج الراتب بعد اضافة عدد من العلاوات


إذهب إلى أفضل إجابة Solved by Barna,

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

السلام عليكم

لدي ملف فيه الدرجة الوظيفية والمرحلة الوظيفية وجدول الراتب (Salary) 

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

لدي طلبين 

الطلب الاول: جلب الراتب الجديد من الجدول في حقل (الراتب الجديد) بشرط اضافة عدد العلاوات مثلا (3) علاوات 

اي احتساب ثلاث حقول بعد الراتب القديم في الجدول salary من اليمين الى البسار وفي حالة انتهاء الحقول ينتقل

الى الحقول الاعلى وهكذا  كما في الصورة بحيث يكون الراتب الصحيح هو (296000)

الطلب الثاني: تعديل الدرجة الوظيفية الجديدة والمرحلة الوظيفية الجديدة بناءً على الراتب الجديد من الجدول (salary)

علما بان (Gradeno) هي الدرجة الوظيفية و الارقام من (1-5)  هي المرحلة الوظيفية

تحياتي

Ahmed.mdb

Untitled.jpg

تم تعديل بواسطه Ahmed_J
رابط هذا التعليق
شارك

استاذ @Barna

النتائج صحيحة بالصور بالنسبة للدرجة 8-2

لكن الجدول سوف يتغير من الدرجة الخامسة فيه حقل مختلف

شكرا  لك

 

 

تم تعديل بواسطه Ahmed_J
رابط هذا التعليق
شارك

استاذ كلها صحيحة

فقط اريد مثال آخر  واحد فقط من الدرجة السادسة الى الخامسة  بسبب اختلاف الحقول

تحياتي

تم تعديل بواسطه Ahmed_J
رابط هذا التعليق
شارك

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

استاذ احمد...لماذا لا تعتمد سنوات الخدمة في احتساب الراتب

عملت لك هذه الشفرة ..وهي شغالة بالنسبة (للبكلوريوس) لانها تبدأ من الدرجة السابعة 

فقط مرر سنوات الخدمة عبر startDate في الدالة

Function IncreaseSalary(startDate As Double) As Double
    Dim years As Double
    Dim newSalary As Double
    years = startDate
    '7
    If years <= 4 Then
        newSalary = 296 + ((years - 1) * 6)
    '6
   ElseIf years > 4 And years <= 8 Then
        newSalary = 362 + ((years - 5) * 6)
     '5
    ElseIf years > 8 And years <= 12 Then
        newSalary = 429 + ((years - 9) * 6)
      '4
    ElseIf years > 12 And years <= 17 Then
        newSalary = 509 + ((years - 13) * 8)
      '3
    ElseIf years > 17 And years <= 22 Then
        newSalary = 600 + ((years - 18) * 10)
    '2
    ElseIf years > 22 And years <= 27 Then
        newSalary = 723 + ((years - 23) * 17)
    '1
    Else
      newSalary = 910 + ((years - 28) * 20)
    End If
    IncreaseSalary = newSalary
End Function

 

  • Like 1
  • Thanks 1
رابط هذا التعليق
شارك

السلام عليكم

استاذ @Eng.Qassim

شلونك   ان شاء الله تكون بالف خير

جربت الكود وهو شغال 

لازم تعمل كود لكل شهادة على حده (دكتوراه و ماجستير و دبلوم عالي) الخ

تسلم  شيء روعة والله

انا عم اعمل برنامج لاضافة الخدمة (العقد والاجر اليومي) الخ

انت عارف ان اغلب الموظفين القدماء لايتناسب الراتب مع الخدمة (تسكين) الخ

ربي يحفظك من كل مكروه

تحياتي

 

 

تم تعديل بواسطه Ahmed_J
  • Like 1
رابط هذا التعليق
شارك

  • أفضل إجابة
39 دقائق مضت, Ahmed_J said:

كل شيء تمام

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim fld As DAO.Field
    Dim searchNumber As Long
    Dim found As Boolean
    
    searchNumber = Me.C
    Set db = CurrentDb()
    Set rs = db.OpenRecordset("SELECT Salary.GradeNO, Salary.[1], Salary.[2], Salary.[3], Salary.[4], Salary.[5] FROM Salary ORDER BY Salary.GradeNO DESC;", dbOpenDynaset)
    i = 0
    found = False
    Do Until rs.EOF
        For Each fld In rs.Fields
            
            If Not IsNull(fld.Value) And fld.Value = searchNumber Then
                found = True
            ElseIf found And Not IsNull(fld.Value) And i < Me.D And fld.Name <> "GradeNO" Then
                
                i = i + 1
                Me.G = fld.Value
                Me.E = rs!GradeNO
                Me.F = fld.Name
            End If
        Next fld
        
        rs.MoveNext
    Loop

    rs.Close
    Set rs = Nothing
    Set db = Nothing

 

  • Like 2
  • Thanks 2
رابط هذا التعليق
شارك

اخي الغالي احمد، كل ماذكرته باعتقادي يتم عن طريق ربط الجداول بالطريقة الصحيحة، كيف 

جدول الموظفين و جدول المراتب و جدول الدرجات ويتم تكوين جدول تقاطعي لل Salary

تحياتي الك🌹🌹

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

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