اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

التعديل على ملف توزيع الخدمة الوظيفية بالسنوات


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

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

السلام عليكم

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

المطلوب : توزيع الخدمة_المضافة_سنة مثلا (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
رابط هذا التعليق
شارك

السلام عليكم

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

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

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

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

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

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

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

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

    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
رابط هذا التعليق
شارك

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

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

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

مثلا فترة المكوث= 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
رابط هذا التعليق
شارك

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
رابط هذا التعليق
شارك

السلام عليكم

استاذي العزيز @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