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

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

قام بنشر

السلام عليكم الإخوة الأفاضل في هذا المنتدى الجميل

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

القاعدة المرفقة بها جدول  مختصر الحقول يمثل تقييم الموظفين  - في السابق كان عندي نوع واحد من الموظفين

  والآن اريد أن أضيف له عدة انواع  من الموظفين ( مهندسن - معلمين...) وكل نوع من الموظفين عنده تقييمات خاصة

وهذه التقييمات الخاصة (الحقول) وضعت لها قيم افتراضية خاصة بها لتسهيل عملية حجز البيانات (تكون محجوزة تلقائيا) فقط أقوم بتغيير التقيمات إذا كان هناك تغيير.

 

مثال في الجدول : فيه نوعين : النوع الأول: المهندسين   النوع الثاني : المعليمن    وذلك حسب ما يظهر في الحقل المسمى  : loifondamontale

النوع: النوع الأول: المهندسين     عنده مجموع من التقييمات ( الحقول)  الخاصة بالموظفين لهذا النوع وهي :

*   evalu_moubadara_chaksia*  evalu_itkan_elamel*    evalu_nachatat_tarbia   *evalu_absence * evalu_retard * evalu_tatwir

هذه الحقول (التقييمات) وضعت لها قيم افتراضية موضحة في الجدول

من فضلكم اريد مايلي :الحقول هذه تأخذ القيمة الافتراضية الخاصة بها المبينة في الجدول  إذا كان  النوع  (الحقل)  المسمى   loifondamontale    يساوي : المهندسين    وإذا كان مختلف تأخذ القمية صفر.

 

النوع: النوع الثاني: المعلمين عنده مجموع من التقييمات ( الحقوول)  الخاصة بالموظفين لهذا النوع و هي :

 evalu_absence_prof  * evalu_retard_prof * evalu_nadawat_prof * evalu_nachatat_tarbia_prof * evalu_mobadara_prof

هذه الحقول (التقييمات) وضعت لها قيم افتراضية موضحة في الجدول

من فضلكم اريد مايلي :الحقول هذه تأخذ القيمة الافتراضية الخاصة بها المبينة في الجدول إذا كان  النوع  (الحقل)  المسمى   loifondamontale    يساوي : المعلمين وإذا كان مختلف تأخذ القمية صفر.

نتمنى أني قد أوصلت الفكرة لكم وهل يمكن تجسيدها بالاعتماد على الجدول فقط أو الإعتماد على طريقة اخرى

الرجاء المساعدة والتوجيه وبارك الله فيكم

BASE-E.accdb

قام بنشر
منذ ساعه, moho58 said:

السلام عليكم

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

كإجابة على السؤال المهم في طلبك ، إن كان يمكن تحقيقه من خلال الجدول نفسه ، فإجابتي لا . ما لم يكن هناك رأي آخر .

فمثلاً لا تستطيع ادخال قيمة افتراضية لحقل ما داخل جدول من خلال معادلة أو جملة شرطية . كمثال:-

=IIf([loifondamontale]="المهندسين", 1, 0)

ولا أحاول إحباطك ، فيمكن تحقيق الهدف بطرق مختلفة . منها استخدام الجمل الشرطية المعقدة داخل حدث بعد التحديث لمربع النص او الكومبوبوكس loifondamontale كمثال للتوضيح بالافتراض ان لديك نموذج لإدخال البيانات في هذا الجدول :-

Private Sub loifondamontale_AfterUpdate()

    Dim typ As String
    typ = Me.loifondamontale

    If typ = "مهندسين" Then
        Me.evalu_moubadara_chaksia = 5
        Me.evalu_itkan_elamel = 4
        Me.evalu_nachatat_tarbia = 3
        Me.evalu_absence = 0
        Me.evalu_retard = 1
        Me.evalu_tatwir = 2
        Me.evalu_absence_prof = 0
        Me.evalu_retard_prof = 0
        Me.evalu_nadawat_prof = 0
        Me.evalu_nachatat_tarbia_prof = 0
        Me.evalu_mobadara_prof = 0
    ElseIf typ = "معلمين" Then
        Me.evalu_absence_prof = 1
        Me.evalu_retard_prof = 2
        Me.evalu_nadawat_prof = 3
        Me.evalu_nachatat_tarbia_prof = 4
        Me.evalu_mobadara_prof = 5
        Me.evalu_moubadara_chaksia = 0
        Me.evalu_itkan_elamel = 0
        Me.evalu_nachatat_tarbia = 0
        Me.evalu_absence = 0
        Me.evalu_retard = 0
        Me.evalu_tatwir = 0
    Else
        Me.evalu_moubadara_chaksia = 0
        Me.evalu_itkan_elamel = 0
        Me.evalu_nachatat_tarbia = 0
        Me.evalu_absence = 0
        Me.evalu_retard = 0
        Me.evalu_tatwir = 0
        Me.evalu_absence_prof = 0
        Me.evalu_retard_prof = 0
        Me.evalu_nadawat_prof = 0
        Me.evalu_nachatat_tarbia_prof = 0
        Me.evalu_mobadara_prof = 0
    End If

End Sub

 

هذا كإقتراح أول يعتمد على الجملة الشرطية المتعددة ( أو حتى باستخدام Case ) وكلاهما يؤدي الغرض نفسه .

أما عن وجود حل آخر وهو استخدام جدول للقيم الإفتراضية التي تريدها ولنفترض انه سيتكون من 3 حقول ( نوع الموظف ، اسم الحقل ، القيمة الإفتراضية ) - أسماء مجازية - وتملأ القيم مرة واحدة ( وقد يكون لها مستقبلاً نموذج لتعديلها حسب رغبتك ) . ثم وبنفس النمط - في حدث بعد التحديث لمربع النص نفسه أو الكومبوبوكس - نستخدم أسلوب كمثال :-

Private Sub loifondamontale_AfterUpdate()
    Dim rs As DAO.Recordset
    Dim fldName As String, defVal As Variant
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM tbl_DefaultValues WHERE نوع_الموظف = '" & Me.loifondamontale & "'")
    Do While Not rs.EOF
        fldName = rs!اسم_الحقل
        defVal = rs!القيمة_الافتراضية
        Me(fldName) = defVal
        rs.MoveNext
    Loop
    rs.Close
    Set rs = Nothing
End Sub

💡 وفي هذا الحل من الضروري أن تكون أسماء مربعات النص ( في النموذج ) مطابقة تماماً لأسماء الحقول في الجدول .

وقد يكون هناك حلول اخرى تعتمد على الاستعلامات تحديث ، ولكنك هنا ستحتاج شرطاً لتحديد السجل الحالي برقم الموظف أو id الحقل ... إلخ.

جرب ولن تخسر شيء 😇.

  • Like 1
قام بنشر
3 ساعات مضت, Foksh said:

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

كإجابة على السؤال المهم في طلبك ، إن كان يمكن تحقيقه من خلال الجدول نفسه ، فإجابتي لا . ما لم يكن هناك رأي آخر .

فمثلاً لا تستطيع ادخال قيمة افتراضية لحقل ما داخل جدول من خلال معادلة أو جملة شرطية . كمثال:-

=IIf([loifondamontale]="المهندسين", 1, 0)

ولا أحاول إحباطك ، فيمكن تحقيق الهدف بطرق مختلفة . منها استخدام الجمل الشرطية المعقدة داخل حدث بعد التحديث لمربع النص او الكومبوبوكس loifondamontale كمثال للتوضيح بالافتراض ان لديك نموذج لإدخال البيانات في هذا الجدول :-

Private Sub loifondamontale_AfterUpdate()

    Dim typ As String
    typ = Me.loifondamontale

    If typ = "مهندسين" Then
        Me.evalu_moubadara_chaksia = 5
        Me.evalu_itkan_elamel = 4
        Me.evalu_nachatat_tarbia = 3
        Me.evalu_absence = 0
        Me.evalu_retard = 1
        Me.evalu_tatwir = 2
        Me.evalu_absence_prof = 0
        Me.evalu_retard_prof = 0
        Me.evalu_nadawat_prof = 0
        Me.evalu_nachatat_tarbia_prof = 0
        Me.evalu_mobadara_prof = 0
    ElseIf typ = "معلمين" Then
        Me.evalu_absence_prof = 1
        Me.evalu_retard_prof = 2
        Me.evalu_nadawat_prof = 3
        Me.evalu_nachatat_tarbia_prof = 4
        Me.evalu_mobadara_prof = 5
        Me.evalu_moubadara_chaksia = 0
        Me.evalu_itkan_elamel = 0
        Me.evalu_nachatat_tarbia = 0
        Me.evalu_absence = 0
        Me.evalu_retard = 0
        Me.evalu_tatwir = 0
    Else
        Me.evalu_moubadara_chaksia = 0
        Me.evalu_itkan_elamel = 0
        Me.evalu_nachatat_tarbia = 0
        Me.evalu_absence = 0
        Me.evalu_retard = 0
        Me.evalu_tatwir = 0
        Me.evalu_absence_prof = 0
        Me.evalu_retard_prof = 0
        Me.evalu_nadawat_prof = 0
        Me.evalu_nachatat_tarbia_prof = 0
        Me.evalu_mobadara_prof = 0
    End If

End Sub

 

هذا كإقتراح أول يعتمد على الجملة الشرطية المتعددة ( أو حتى باستخدام Case ) وكلاهما يؤدي الغرض نفسه .

أما عن وجود حل آخر وهو استخدام جدول للقيم الإفتراضية التي تريدها ولنفترض انه سيتكون من 3 حقول ( نوع الموظف ، اسم الحقل ، القيمة الإفتراضية ) - أسماء مجازية - وتملأ القيم مرة واحدة ( وقد يكون لها مستقبلاً نموذج لتعديلها حسب رغبتك ) . ثم وبنفس النمط - في حدث بعد التحديث لمربع النص نفسه أو الكومبوبوكس - نستخدم أسلوب كمثال :-

Private Sub loifondamontale_AfterUpdate()
    Dim rs As DAO.Recordset
    Dim fldName As String, defVal As Variant
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM tbl_DefaultValues WHERE نوع_الموظف = '" & Me.loifondamontale & "'")
    Do While Not rs.EOF
        fldName = rs!اسم_الحقل
        defVal = rs!القيمة_الافتراضية
        Me(fldName) = defVal
        rs.MoveNext
    Loop
    rs.Close
    Set rs = Nothing
End Sub

💡 وفي هذا الحل من الضروري أن تكون أسماء مربعات النص ( في النموذج ) مطابقة تماماً لأسماء الحقول في الجدول .

وقد يكون هناك حلول اخرى تعتمد على الاستعلامات تحديث ، ولكنك هنا ستحتاج شرطاً لتحديد السجل الحالي برقم الموظف أو id الحقل ... إلخ.

جرب ولن تخسر شيء 😇.

تحية طيبة اخي و استاذنا  @Foksh

مشكور جدا على الرد وعلى سرعة الإجابة

الحل الأول يبدو جيدا جدا و يفي بالغرض

أنا سأستعمل نمودجين عند ادخال البيانات

النموذج الأول خاص : بالمهندسين   و واضع شرط في النموذج 
loifondamontale    = مهندسين

النموذج الأول خاص : بالمعلمين و واضع شرط في النموذج 

loifondamontale    = معلمين

فلن أستعمل مربع النص بعد التحديث

سأجرب هذه الأكواد في النموذج  في حدث عند الحالي مثلا

كون سأبتعد عن الكمبيوتر -سأجرب هذا الحل بعد سويعات (قبل المساء ) ,اخبرك بالنتيجة

جزاك الله كل الخير أخي وبارك الله فيك

قام بنشر

مداخلة

وآمل ان يتسع صدر صاحب المسألة لملاحظتي .

طريقة التصميم بحاجة الى اعادة نظر

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

 

  • Like 1
قام بنشر

تحية طيبة أخي @Foksh

لقد حاولت ولم تضبط معي

لقد أرفقت لك الملف عندما تتيج لك الفرصة إن أمكن تطبق الحل الأول المقترح

عندي نموذجين : نموذج خاص بالنوع: المهندسين والنوع الثاني: خاص : بالمعلمين

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

قام بنشر
5 دقائق مضت, moho58 said:

لقد حاولت ولم تضبط معي

 

أهلاً أخي الكريم ..

يبدو انك لم تأخذ بنصيحة معلمي الفاضل أبو خليل ,

ثم انك لم ترسل المرفق الذي تقول عنه يحتوي النموذجين !!!

قام بنشر
23 ساعات مضت, ابوخليل said:

مداخلة

وآمل ان يتسع صدر صاحب المسألة لملاحظتي .

طريقة التصميم بحاجة الى اعادة نظر

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

 

أهلا ومرحبا  أخي @ابوخليل

يسعدني كثيرا مداخلتك ومرورك - شاكرا جدا فضلكم علي وعلى المنتدى الجميل

نحن نتعلم منكم و من أمثالكم أساتذنا الكرام وكذا الأعضاء الكرام

لو سمحت سأعرض كيفية عمل هذا المشروع وتسعدني مرة أخرى ملاحظاتك

هذا العمل خاص بتقييم الموظفين

عندي جدولين :    

الجدول الأول:خاص بالبيانات العامة للموظفين   فية : الاسم - الميلاد- النوع- الدرجة وكل شئ.....خاص بالموظف

الجدول الثاني: خاص بمعايير التقييم : تقييم الموظفين

يتم ادراج بواسطة " زر "البيانات التي احتاجها من الجدول الأول في الجدول الثاني

كمثال فقط أنا وضعت هنا نوعين من التقييمات

نوع : المهندسين عنده نوع من التقييمات تختلف تماما عن تقييمات نوع المعلمين في الأسماء والنقاط المتحصل عليها

لذا وضعت حقول مختلفة حسب معرفتي المتواضعة

 

 

الان, Foksh said:

أهلاً أخي الكريم ..

يبدو انك لم تأخذ بنصيحة معلمي الفاضل أبو خليل ,

ثم انك لم ترسل المرفق الذي تقول عنه يحتوي النموذجين !!!

والله كنت أكتب في كيفية عمل هذا المشروع لأستاذنا  @ابوخليلبينما أنت كتب هذا التعليق

 

 

 

تفضل أخي @Foksh

 

 

BASE-E1.accdb

  • Like 1
قام بنشر
منذ ساعه, moho58 said:

والله كنت أكتب في كيفية عمل هذا المشروع لأستاذنا  @ابوخليلبينما أنت كتب هذا التعليق

 

ولا يهمك أخي الكريم ..

لكن لي نوضيح لك مستقبلاً ..

انت تعلم أن التعامل مع النماذج المستمرة يختلفعن النماذج المنفردة ( صحيح ؟؟ ) ناهيك عن موضوع الرول باك الذي تستعمله :smile:

على العموم جرب هذا التعديل في مرفقك حيث استخدمت نفس الكود تماماً في الزرين في النموذجين ..

Private Sub cmdSave_Click()
    Dim rs As DAO.Recordset
    Dim typ As String
    With WrkSpace
        'commit any changes
        .CommitTrans
        Me.Recordset.Requery
        'begin  new transaction
        .BeginTrans
    End With
    m_dirty = False
    
    Set rs = Me.RecordsetClone
    rs.MoveFirst

    Do While Not rs.EOF
        typ = Me.نص929
        
        rs.Edit
        If typ = "مهندسين" Then
            rs!evalu_moubadara_chaksia = 4.5
            rs!evalu_itkan_elamel = 4.5
            rs!evalu_nachatat_tarbia = 3
            rs!evalu_absence = 8
            rs!evalu_retard = 4
            rs!evalu_tatwir = 4.5
            rs!evalu_absence_prof = 12
            rs!evalu_retard_prof = 4
            rs!evalu_nadawat_prof = 6
            rs!evalu_nachatat_tarbia_prof = 6
            rs!evalu_mobadara_prof = 12
        Else
            rs!evalu_moubadara_chaksia = 0
            rs!evalu_itkan_elamel = 0
            rs!evalu_nachatat_tarbia = 0
            rs!evalu_absence = 0
            rs!evalu_retard = 0
            rs!evalu_tatwir = 0
            rs!evalu_absence_prof = 12
            rs!evalu_retard_prof = 4
            rs!evalu_nadawat_prof = 6
            rs!evalu_nachatat_tarbia_prof = 6
            rs!evalu_mobadara_prof = 12
        End If
        rs.Update
        rs.MoveNext
    Loop

    Set rs = Nothing
    m_dirty = False
End Sub

 

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

BASE-E1.zip

قام بنشر
3 ساعات مضت, moho58 said:

 

نوع : المهندسين عنده نوع من التقييمات تختلف تماما عن تقييمات نوع المعلمين في الأسماء والنقاط المتحصل عليها

لذا وضعت حقول مختلفة حسب معرفتي المتواضعة

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

اما السطر الأحمر فأعرف ماذا تريد ان تصل اليه .. انت تريد تثبيت القيمة الافتراضية من اجل تسهيل عملية الادخال

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

________

يجب ان تفكر في المخرجات وما يواجهك مستقبلا في الاستعلامات والتقارير .. سيتم تكرار ادوات وكائنات لكل نوع

قام بنشر

القيمة الافتراضية ستكون عقبة مستقبلا

هذه القيم التي تضعها قد تتغير من فصل الى آخر ومن سنة الى اخرى

هل اذا تغيرت ستدخل مستقبلا الى التصميم وتغيرها ؟؟ هذه ليست برمجة

فكر بطريقة تجعل هذه القيم بيد المستخدم .. يغيرها كيف ومتى شاء

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

تحية طيبة - نعم معك أخي @Foksh

أنا أتعامل مع النماذج المستمرة والأكواد الموجدودة فيها نوعا ما يؤثر على المطلوب

لو سمحت بعد التجربة

عند الضغط على زر "حفظ" يعطينا القيمة الافتراضية - لكن عندما أٍريد ان أغير القيمة الافتراضية للموظف وأضغط على زر "حفظ "يرجعلي القيمة الافتارضية من جديد

مثال: عند الضغط على زر حفظ  نفرض القيمة الافتراضية للموظف هي 8 أغيرها إلى 1  ثم اضغط على زر حفظ ترجع 8 كما كانت

طلبي  إن أمكن طبعا

الكود لا يكون مرتبط بزر حفظ- *وإن أمكن القيم التلقائية تكون ظاهرة عند فتح النموذج دون الضغط على أي زر .

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

 

تحية طيبة استاذنا @ابوخليل

نعم معك حق انا اريد تثبيت القيمة الافتراضية من أجل تسهيل عملية الادخال - لأن أغلب الموظفين يأخدون العلامة الافتراضية و تبقى فئة قليلة جدا ممكن أغير لها القيمة

لنفرض عدد الموظفين 500 صعب جدا ادخلها يدويا - من الأحسن تكون افتراضية وظاهرة - حسب علمي ومعرفتي المحدودة

هذي المعايير لا تتغيير من سنة إلى أخرى ولكن معك حق ممكن تتغيير عندما يتم تغيير نظام تقييم الموظفين مثلا بعد 10 سنوات

فيما يخص النماذج واختصارها أنا عندي حوالي 5 أنواع : مهندسن - معلمين - باحثين-.... هل يمكن إختصارها في نموذج واحد والمعايير تختلف والتسميات تختلف وهل لا يؤثر ذلك عند حجز الدرجات (النقاط) إذا كان العدد كبير للموظفين

وجزاك الله خيرا أستاذنا وتشرفنا ملاحظاتك من جديد

تم تعديل بواسطه moho58
زيادة الشرح
قام بنشر

الآن انت تصارع من اجل ادخال البيانات

لا يهم مسألة طريقة الادخال مهما كانت معقدة .. بقدر أهمية التصميم الصحيح للجداول

المبرمج الناجح الذي يعمل ويستمتع همه الأكبر صحة التأسيس . لأن خلفها تبعات : استعلامات وتقارير

الـ 500 موظف الم يخطر ببالك ادخال تقييمهم جميعا بضغطة زر واحدة ( طبعا حسب فكرتك بوجود قيم افتراضية)؟

ثم بعدها ترجع لمن هو بحاجة الى تعديل ؟

  • Like 2
قام بنشر

فعلاً ستواجه مشاكل أثناء صراع الأفكار وتنفيذها في نماذجك .. ولكن بناءً على اصرارك ، فقد ارتأتيت تغيير الوجهة كاملة بحيث نجعل العمل من خلال دالة عامة يتم استدعائها في حدث عند التحميل للنماذج ، ودون أن نؤثر على أكوادك في نماذجك .. جرب وأخبرنا بالنتيجة .
الصق الدالة التالية في مديول :-

Public Sub Foksh(frm As Form)
    On Error GoTo ErrorHandler
    
    Dim rs As DAO.Recordset
    Dim typ As String
    Dim ctrl As Control
    
    On Error Resume Next
    Set ctrl = frm.Controls("نص929")
    If Err.Number <> 0 Then
        MsgBox "لم يتم التحقق من قيمة وظيفة الموظف", vbExclamation + vbMsgBoxRight, ""
        Exit Sub
    End If
    On Error GoTo ErrorHandler
    
    Set rs = frm.RecordsetClone
    
    If rs.RecordCount = 0 Then
        MsgBox "لا توجد سجلات لعرضها", vbInformation + vbMsgBoxRight, ""
        GoTo CleanUp
    End If
    
    rs.MoveFirst

    Do While Not rs.EOF
        typ = ctrl.Value
        
        rs.Edit
        If typ = "مهندسين" Then
            rs!evalu_moubadara_chaksia = 4.5
            rs!evalu_itkan_elamel = 4.5
            rs!evalu_nachatat_tarbia = 3
            rs!evalu_absence = 8
            rs!evalu_retard = 4
            rs!evalu_tatwir = 4.5
            rs!evalu_absence_prof = 12
            rs!evalu_retard_prof = 4
            rs!evalu_nadawat_prof = 6
            rs!evalu_nachatat_tarbia_prof = 6
            rs!evalu_mobadara_prof = 12
        Else
            rs!evalu_moubadara_chaksia = 0
            rs!evalu_itkan_elamel = 0
            rs!evalu_nachatat_tarbia = 0
            rs!evalu_absence = 0
            rs!evalu_retard = 0
            rs!evalu_tatwir = 0
            rs!evalu_absence_prof = 12
            rs!evalu_retard_prof = 4
            rs!evalu_nadawat_prof = 6
            rs!evalu_nachatat_tarbia_prof = 6
            rs!evalu_mobadara_prof = 12
        End If
        rs.Update
        rs.MoveNext
    Loop
    
    frm.Requery
    
CleanUp:
    On Error Resume Next
    rs.Close
    Set rs = Nothing
    Set ctrl = Nothing
    Exit Sub
    
ErrorHandler:
    MsgBox " : حدث خطأ" & Err.Description, vbCritical + vbMsgBoxRight, "خطأ"
    Resume CleanUp
End Sub

 

واستدعيها في حدث عند التحميل في نموذجيك أول أمر :-

Private Sub Form_Load()
    Call Foksh(Me)
.
.
.
.
.
End Sub

 

 

  • Like 1
قام بنشر
2 ساعات مضت, Foksh said:

فعلاً ستواجه مشاكل أثناء صراع الأفكار وتنفيذها في نماذجك .. ولكن بناءً على اصرارك ، فقد ارتأتيت تغيير الوجهة كاملة بحيث نجعل العمل من خلال دالة عامة يتم استدعائها في حدث عند التحميل للنماذج ، ودون أن نؤثر على أكوادك في نماذجك .. جرب وأخبرنا بالنتيجة .
الصق الدالة التالية في مديول :-

Public Sub Foksh(frm As Form)
    On Error GoTo ErrorHandler
    
    Dim rs As DAO.Recordset
    Dim typ As String
    Dim ctrl As Control
    
    On Error Resume Next
    Set ctrl = frm.Controls("نص929")
    If Err.Number <> 0 Then
        MsgBox "لم يتم التحقق من قيمة وظيفة الموظف", vbExclamation + vbMsgBoxRight, ""
        Exit Sub
    End If
    On Error GoTo ErrorHandler
    
    Set rs = frm.RecordsetClone
    
    If rs.RecordCount = 0 Then
        MsgBox "لا توجد سجلات لعرضها", vbInformation + vbMsgBoxRight, ""
        GoTo CleanUp
    End If
    
    rs.MoveFirst

    Do While Not rs.EOF
        typ = ctrl.Value
        
        rs.Edit
        If typ = "مهندسين" Then
            rs!evalu_moubadara_chaksia = 4.5
            rs!evalu_itkan_elamel = 4.5
            rs!evalu_nachatat_tarbia = 3
            rs!evalu_absence = 8
            rs!evalu_retard = 4
            rs!evalu_tatwir = 4.5
            rs!evalu_absence_prof = 12
            rs!evalu_retard_prof = 4
            rs!evalu_nadawat_prof = 6
            rs!evalu_nachatat_tarbia_prof = 6
            rs!evalu_mobadara_prof = 12
        Else
            rs!evalu_moubadara_chaksia = 0
            rs!evalu_itkan_elamel = 0
            rs!evalu_nachatat_tarbia = 0
            rs!evalu_absence = 0
            rs!evalu_retard = 0
            rs!evalu_tatwir = 0
            rs!evalu_absence_prof = 12
            rs!evalu_retard_prof = 4
            rs!evalu_nadawat_prof = 6
            rs!evalu_nachatat_tarbia_prof = 6
            rs!evalu_mobadara_prof = 12
        End If
        rs.Update
        rs.MoveNext
    Loop
    
    frm.Requery
    
CleanUp:
    On Error Resume Next
    rs.Close
    Set rs = Nothing
    Set ctrl = Nothing
    Exit Sub
    
ErrorHandler:
    MsgBox " : حدث خطأ" & Err.Description, vbCritical + vbMsgBoxRight, "خطأ"
    Resume CleanUp
End Sub

 

واستدعيها في حدث عند التحميل في نموذجيك أول أمر :-

Private Sub Form_Load()
    Call Foksh(Me)
.
.
.
.
.
End Sub

 

 

جاري التجريب أخي  وسأوافيك بالنتيجة حالا

قام بنشر
4 ساعات مضت, ابوخليل said:

الآن انت تصارع من اجل ادخال البيانات

لا يهم مسألة طريقة الادخال مهما كانت معقدة .. بقدر أهمية التصميم الصحيح للجداول

المبرمج الناجح الذي يعمل ويستمتع همه الأكبر صحة التأسيس . لأن خلفها تبعات : استعلامات وتقارير

الـ 500 موظف الم يخطر ببالك ادخال تقييمهم جميعا بضغطة زر واحدة ( طبعا حسب فكرتك بوجود قيم افتراضية)؟

ثم بعدها ترجع لمن هو بحاجة الى تعديل ؟

معك حق أستاذنا

ان امكن طريقة جمع النماذج في نموذج واحد

 

قام بنشر

بعد التجربة أخي @Foksh

تظهر القيم تلقائية - لكن عند تغيير القيم والحفظ والخروج - تبقى نفس القيم الثابتة و لا تتغيير

وشكرا كثيرا لك

 

 

BASE-E3.accdb

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