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

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

قام بنشر (معدل)

السلام عليكم

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

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

لدي طلبين 

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

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

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

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

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

تحياتي

Ahmed.mdb

Untitled.jpg

تم تعديل بواسطه Ahmed_J
قام بنشر (معدل)

السلام عليكم

هل ممكن احد الاساتذه يخبرني هل يوجد حل ام لا

تحياتي للجميع

 

تم تعديل بواسطه Ahmed_J
قام بنشر
23 دقائق مضت, Ahmed_J said:

هل ممكن احد الاساتذه يخبرني هل يوجد حل ام ل

ممكن يكون لها حل ... انتظر حتى اصل لجهازي 

او ممكن تجد اجابة من الاخوة الكرام

  • Like 2
قام بنشر (معدل)

استاذ @Barna

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

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

شكرا  لك

 

 

تم تعديل بواسطه Ahmed_J
قام بنشر (معدل)

تعم صحيحة النتائج

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

يعني الخامسة او الرابعة 

تم تعديل بواسطه 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
قام بنشر
32 دقائق مضت, Ahmed_J said:

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

 

1.jpg

2.jpg

3.jpg

  • Like 2
قام بنشر

استاذ @Barna

كل شيء تمام

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

ويجعلها في ميزان حسناتك يارب

تحياتي

قام بنشر (معدل)

السلام عليكم

استاذ @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