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

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

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

السلام عليكم

لدي ملف لاضافة الخدمة الوظيفية بالسنوات من خلال الحقل (الخدمة_المضافة_سنة)

المطلوب : توزيع الخدمة_المضافة_سنة مثلا (7) سنوات يتم مقارنتها بالدرجة الوظيفية بالنموذج مع الجدول tp2 

(اي لوكان الموظف في الدرجة التاسعة  والمرحلة الاولى نضيف له درجة واحدة  وثلاث مراحل وظيفية )  لان فترة مكوثه 4 سنوات

فتصبح الدرجة الوظيفية الجديدة = 8 والمرحلة الوظيفية الجديدة =4 (اي يتم توزيعها)

تحياتي

test.mdb

تم تعديل بواسطه Ahmed_J
  • Ahmed_J changed the title to التعديل على ملف توزيع الخدمة الوظيفية بالسنوات
قام بنشر
17 ساعات مضت, Ahmed_J said:

اي لوكان الموظف في الدرجة التاسعة  والمرحلة الاولى نضيف له درجة واحدة  وثلاث مراحل وظيفية )  لان فترة مكوثه 4 سنوات

فتصبح الدرجة الوظيفية الجديدة = 8 والمرحلة الوظيفية الجديدة =4 (اي يتم توزيعها)

طيب استاذ @Ahmed_J

ممكن شرح ... كيف الموظف كان في التاسعة وصار في الثامنة ... بارك الله فيك ... من امس وانا احاول دبلجتها وما ركبت في رأسي ولا رأس الجهاز

ممكن قصدك العاشرة والمرحلة الرابعة

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

السلام عليكم

استاذي العزيز @Barna

خليني اشرح لك :

الدرجة الثامنة اعلى بالوظيفة وبالراتب  من الدرجة التاسعة وهكذا  (اعلى درجة وظيفية عندنا هي الاولى ) وحسب الجدول

مثلا موظف حاصل على شهادة البكالوريوس يتم تعيينه في الدرجة الوظيفة السابعة / المرحلة الوظيفية الاولى (يعني 7-1)

بعد مرور 4 سنوات خدمة وظيفية يتم ترفيعه الى الدرجة السادسة / المرحلة الاولى يعني (6-1) وهكذا  حسب الجدول  الموجود في الصورة

يعني باختصار (يتم ترفيع الموظف من الدرجة العاشرة  الى الدرجة السادسة كل 4 سنوات  ومن الدرجة الخامسة الى الدرجة الاولى كل 5 سنوات)

---------------------------------------------------------------------------------------------------------------------------------------

المطلوب : توزيع الخدمة_المضافة_سنة مثلا (7) سنوات يتم مقارنتها بالدرجة الوظيفية بالنموذج مع الجدول tp2 

(اي لوكان الموظف في الدرجة التاسعة  والمرحلة الاولى نضيف له درجة واحدة  وثلاث مراحل وظيفية )  لان فترة مكوثه 4 سنوات

فتصبح الدرجة الوظيفية الجديدة = 8 والمرحلة الوظيفية الجديدة =4 (اي يتم توزيعها) وهكذا

تحياتي

 

Untitled.jpg

تم تعديل بواسطه Ahmed_J
  • Thanks 1
قام بنشر (معدل)
4 ساعات مضت, Ahmed_J said:

المطلوب : توزيع الخدمة_المضافة_سنة مثلا (7) سنوات يتم مقارنتها بالدرجة الوظيفية بالنموذج مع الجدول tp2 

(اي لوكان الموظف في الدرجة التاسعة  والمرحلة الاولى نضيف له درجة واحدة  وثلاث مراحل وظيفية )  لان فترة مكوثه 4 سنوات

فتصبح الدرجة الوظيفية الجديدة = 8 والمرحلة الوظيفية الجديدة =4 (اي يتم توزيعها) وهكذا

طيب استاذنا @Ahmed_J

جرب الشيفرة ان شاء الله تلبي طلبك ......

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim i, ii, R, Grad As Integer
    Dim numCopies As Integer
    
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT tp2.GradeNO, tp2.سنوات_المكوث FROM tp2 WHERE (((tp2.GradeNO)<=" & Me.الدرجة_الوظيفية & ")) ORDER BY tp2.GradeNO DESC;", dbOpenDynaset)
    ii = Me.iYear
    R = 0
    Do Until rs.EOF
        numCopies = rs!سنوات_المكوث
        
        For i = 1 To numCopies
            If ii = 0 Then
                Me.مربع_تحرير_وسرد47 = Grad
                Me.مربع_تحرير_وسرد49 = Me.المرحلة_الوظيفية + R
                Exit Sub
            End If
            ii = ii - 1
            Grad = rs!GradeNO
        Next i
        R = R + Me.iYear - rs!سنوات_المكوث
        
        rs.MoveNext
    Loop
    rs.Close
    Set rs = Nothing
    Set db = Nothing

 

تم تعديل بواسطه Barna
  • Like 1
قام بنشر (معدل)

السلام عليكم

استاذي العزيز @Barna

شكرا للمتابعة بارك الله فيك

ملاحظة المرحلة الوظيفية الجديدة تبقى محصورة بين (1- 5) حسب فترة المكوث في الجدول tp2 

الفكرة صحيحة لكن الاحتساب فيه مشكله

لو قمنا بزيادة الخدمة المضافة سنة واحدة  واصبحت 8 سنوات بدلا من 7 

المفروض البرنامج يحتسب درجتين وتصبح الدرجة الجديدة 7 المرحلة 1 وليس 8-9

تحياتي

Untitled.jpg

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

ملاحظة المرحلة الوظيفية الجديدة تبقى محصورة بين (1- 5) حسب فترة المكوث في الجدول tp2 

طيب في هذه الحالة .... ماهو الصحيح

 

1.jpg

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

السلام عليكم

شكرا لك استاذ @Barna

المشكلة انني ما عم اقدر اوصل الفكرة بصورة صحيحة ؟؟

نفترض ان موظف في الدرحة الثامنة والمرحلة الاولى

المهم : لوكان الموظف لديه 7 سنوات خدمة اضافية  راح نطرح (4) سنوات  (فترة المكوث) ونضيف بدلا منها درجة وظيفية  والباقي  (3)  سنوات تجمع مع

المرحلة الوظيفية السابقة

فتصبح النتيجة الدرجة 8  والمرحلة 4

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

طيب في هذه الحالة .... ماهو الصحيح

 

1.jpg

جميل ... اليس هذا ماتم في هذه الصورة

  • Like 1
قام بنشر

طيب جرب كده على امثلة لديك ....

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim i, TT As Integer
    Dim numCopies As Integer
    
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT tp2.GradeNO, tp2.سنوات_المكوث FROM tp2 WHERE (((tp2.GradeNO)<=" & Me.الدرجة_الوظيفية & ")) ORDER BY tp2.GradeNO DESC;", dbOpenDynaset)
    TT = iYear
    Do Until rs.EOF
        TT = TT - rs!سنوات_المكوث
        numCopies = rs!سنوات_المكوث
            If TT < rs!سنوات_المكوث Then
                Me.مربع_تحرير_وسرد47 = rs!GradeNO - 1
                Me.مربع_تحرير_وسرد49 = Me.المرحلة_الوظيفية + TT
                Exit Sub
            End If
            
        For i = 1 To numCopies
        Next i
        rs.MoveNext
    Loop
    rs.Close
    Set rs = Nothing
    Set db = Nothing

 

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

السلام عليكم

استاذ @Barna

النتائج ان شاء الله طيبة

الصورة (1) و الصورة (2) النتائج صحيحة  عندما يتكون المرحلة الوظيفية السابقة =1 

الصورة (3) غير صحيحة  لان المرحلة الوظيفية السابقة اكبر من 1

المفروض تكون الدرجة الوظيفية الجديده =6  والمرحلة الوظيفية الجديدة =1

السبب : لان المرحلة الوظيفية الجديده في الصورة (3) = 5  وان فترة المكوث =4     

الصحيح ان الموظف يرتفع درجة ويصبح = 6   والمرحلة الوظيفية =1

 تحياتي      

 

1.jpg

2.jpg

 

3.jpg

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

الصحيح ان الموظف يرتفع درجة ويصبح = 6   والمرحلة الوظيفية =1

يرتفع درجة يعني 7  صح

هو كان في الثامنة

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

يعني ينقص درجة  يصبح  الدرجة 6  المرحلة 1

كما في الصورة 3

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

يعني ينقص درجة  يصبح  الدرجة 6 

8 -1 = 7 وليس 6 <<<<<<<<<<<<<<< هذا بالنسبة للدرجة

والمرحلة كان في 2 واضيفت لها 7- 4 =3 تضاف للمرحلة وتصبح 5

 

1.jpg

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

استاذي العزيز

فكرتك صحيحة جدا ؟ لكن 

المرحلة الوظيفية يعني سنوات الخدمة

مثلا فترة المكوث= 4 سنوات لماذا يبقى الموظف  5 سنوات في المرحلة الوظيفية 

المفروض ينتقل الى درجة وظيفية اعلى  عند وصوله للمرحلة 4 

اي يجب ان لاتكون  المرحلة الوظيفية اكبر من فترة المكوث 

 

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

المرحلة الوظيفية يعني سنوات الخدمة

مثلا فترة المكوث= 4 سنوات لماذا يبقى الموظف  5 سنوات في المرحلة الوظيفية 

المفروض ينتقل الى درجة وظيفية اعلى  عند وصوله للمرحلة 4 

اي يجب ان لاتكون  المرحلة الوظيفية اكبر من فترة المكوث 

طيب شوف كده .......

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim i, TT As Integer
    Dim numCopies As Integer
    
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT tp2.GradeNO, tp2.سنوات_المكوث FROM tp2 WHERE (((tp2.GradeNO)<=" & Me.الدرجة_الوظيفية & ")) ORDER BY tp2.GradeNO DESC;", dbOpenDynaset)
    TT = iYear
    Do Until rs.EOF
        TT = TT - rs!سنوات_المكوث
        numCopies = rs!سنوات_المكوث
            If TT < rs!سنوات_المكوث Then
                Me.مربع_تحرير_وسرد47 = rs!GradeNO - 1
                Me.مربع_تحرير_وسرد49 = Me.المرحلة_الوظيفية + TT
                GoTo RR
            End If
            
        For i = 1 To numCopies
        Next i
        rs.MoveNext
    Loop
RR:
            If TT < rs!سنوات_المكوث And Me.مربع_تحرير_وسرد49 = 5 Then
                Me.مربع_تحرير_وسرد47 = rs!GradeNO - 1
                Me.مربع_تحرير_وسرد49 = 1
                Exit Sub
            End If
    rs.Close
    Set rs = Nothing
    Set db = Nothing

 

جرب على امثلة اخرى للتاكد من الشيفرة 

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

استاذ @Barna

والله تعبتك كثير معي

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

النتائج اكثرها اصبحت غير صحيحة

 

Untitled.jpg

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

النتائج اكثرها اصبحت غير صحيحة

طيب .... 

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim i, TT As Integer
    Dim numCopies As Integer
    
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT tp2.GradeNO, tp2.سنوات_المكوث FROM tp2 WHERE (((tp2.GradeNO)<=" & Me.الدرجة_الوظيفية & ")) ORDER BY tp2.GradeNO DESC;", dbOpenDynaset)
    TT = iYear
    Do Until rs.EOF
        TT = TT - rs!سنوات_المكوث
        numCopies = rs!سنوات_المكوث
            If TT < rs!سنوات_المكوث Then
                Me.مربع_تحرير_وسرد47 = rs!GradeNO - 1
                Me.مربع_تحرير_وسرد49 = Me.المرحلة_الوظيفية + TT
                GoTo RR
            End If
            
        For i = 1 To numCopies
        Next i
        rs.MoveNext
    Loop
RR:
            If Me.مربع_تحرير_وسرد49 > rs!سنوات_المكوث Then
                Me.مربع_تحرير_وسرد47 = rs!GradeNO - 2
                Me.مربع_تحرير_وسرد49 = 1
                Exit Sub
            End If
    rs.Close
    Set rs = Nothing
    Set db = Nothing

 

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

السلام عليكم

استاذ @Barna

لسه فيه اخطاء 

اعتقد ان المشكلة في سنوات المكوث في الجدول

لانها تكون 4 سنوات  واحيانا 5 سنوات

تم تعديل بواسطه Ahmed_J
  • أفضل إجابة
قام بنشر
15 ساعات مضت, Ahmed_J said:

هذه احدى الاخطاء استاذي العزيز

طيب جرب على حالات اخرى ....

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim i, TT As Integer
    Dim numCopies As Integer
    
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT tp2.GradeNO, tp2.سنوات_المكوث FROM tp2 WHERE (((tp2.GradeNO)<=" & Me.الدرجة_الوظيفية & ")) ORDER BY tp2.GradeNO DESC;", dbOpenDynaset)
    TT = iYear
    Do Until rs.EOF
        TT = TT - rs!سنوات_المكوث
        numCopies = rs!سنوات_المكوث
            If TT < rs!سنوات_المكوث Then
                Me.مربع_تحرير_وسرد47 = rs!GradeNO - 1
                Me.مربع_تحرير_وسرد49 = Me.المرحلة_الوظيفية + TT
                rs.MoveNext
                GoTo RR
                'Exit Sub
            End If
            
        For i = 1 To numCopies
        Next i
        rs.MoveNext
    Loop
RR:
            If Me.مربع_تحرير_وسرد49 > rs!سنوات_المكوث Then
                Me.مربع_تحرير_وسرد47 = rs!GradeNO - 1
                Me.مربع_تحرير_وسرد49 = 1
                Exit Sub
            End If
    rs.Close
    Set rs = Nothing
    Set db = Nothing

 

  • Like 1
  • Thanks 1
قام بنشر
12 دقائق مضت, Eng.Qassim said:

احسنت استاذنا الغالي برناوي @Barna

الشفرة جميلة جدا ..عاشت الايادي

حياك الله بشمهندس @Eng.Qassim

تقبل الله منا ومنكم صالح الاعمال

جزاك الله خير

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

السلام عليكم

استاذي العزيز @Barna

شكرا لك

بارك الله فيك

اصبح البرنامج شغال 100%  بعد تعديل كود واحد فقط الى:

Me.مربع_تحرير_وسرد49 = Me.المرحلة_الوظيفية - 1

تحياتي

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

السلام عليكم

استاذي العزيز @Barna

شكرا لك

بارك الله فيك

اصبح البرنامج شغال 100%  بعد تعديل كود واحد فقط الى:

Me.مربع_تحرير_وسرد49 = Me.المرحلة_الوظيفية - 1

تحياتي

الحمد لله رب العالمين ...

ممكن نسخ الكود كامل ووضعه في الموضوع .... لان التعديلات كثيرة في الموضوع ... حتى يتمكن المراجع للموضوع سرعة الوصول اليه

 

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