moho58 قام بنشر منذ 14 ساعات قام بنشر منذ 14 ساعات السلام عليكم الإخوة الأفاضل في هذا المنتدى الجميل في هذا الموضوع أريد وضع قيمة افتراضية لحقل في جدول بشرط القاعدة المرفقة بها جدول مختصر الحقول يمثل تقييم الموظفين - في السابق كان عندي نوع واحد من الموظفين والآن اريد أن أضيف له عدة انواع من الموظفين ( مهندسن - معلمين...) وكل نوع من الموظفين عنده تقييمات خاصة وهذه التقييمات الخاصة (الحقول) وضعت لها قيم افتراضية خاصة بها لتسهيل عملية حجز البيانات (تكون محجوزة تلقائيا) فقط أقوم بتغيير التقيمات إذا كان هناك تغيير. مثال في الجدول : فيه نوعين : النوع الأول: المهندسين النوع الثاني : المعليمن وذلك حسب ما يظهر في الحقل المسمى : 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
Foksh قام بنشر منذ 13 ساعات قام بنشر منذ 13 ساعات منذ ساعه, 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 الحقل ... إلخ. جرب ولن تخسر شيء 😇.
moho58 قام بنشر منذ 8 ساعات الكاتب قام بنشر منذ 8 ساعات 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 = معلمين فلن أستعمل مربع النص بعد التحديث سأجرب هذه الأكواد في النموذج في حدث عند الحالي مثلا كون سأبتعد عن الكمبيوتر -سأجرب هذا الحل بعد سويعات (قبل المساء ) ,اخبرك بالنتيجة جزاك الله كل الخير أخي وبارك الله فيك
ابوخليل قام بنشر منذ 8 ساعات قام بنشر منذ 8 ساعات مداخلة وآمل ان يتسع صدر صاحب المسألة لملاحظتي . طريقة التصميم بحاجة الى اعادة نظر جعل كل نوع له حقوله الخاصة غير عملي .. ومخالف لنظام قواعد البيانات ... طريقتك هذه مكانها اكسل
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.