اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
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 الحقل ... إلخ.

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

قام بنشر
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    = معلمين

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

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

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

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

قام بنشر

مداخلة

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

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

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

 

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