الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تلوين حقل فى نموذج فرعى بناء على تاريخ فى نموذج فرعى آخر

بدأه ahmed f في 28 فبراير 2014 · 5 رد · 1,066 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم جميعا

 

لدى برنامج للاجازات .. عبارة عن نموذج رئيس يحتوى على combbox ونموذجين فرعيين 

عند الضغط على القسم فى ال combobox يتغير النموذج الفرعى الاول ليعرض اسماء الاشخاص به ، ويتغير النموذج الثانى ليعرض اجازات الاشخاص بدايتها ونهايتها

 

ما اريده هو

 

ان يصبح اسم الشخص باللون الاحمر فيما اذا كان اجازة فى تاريخ اليوم

 

مرفق مثال للقاعدة التى اعمل عليها

 

مع خالص شكرى وتقديرى

Vacations.rar

تم تعديل هذه المشاركة بواسطة ahmed f في 28 فبراير 2014 في 11:07

#2

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

 

 

 

أخي الفاضل

 

قمت بأستخدام خاصية التنسيق الشرطي  conditional formatting

حيث قمت بكتاية الكود التالي في حقل أسم الطبيب "myname"

(Nz(DLookUp("MyID","Vacations","[myid]="& [myid] & "AND #" & date() & "# Between [start_vac] And [end_vac]"),0))<>0

الكود عبارة عن التالي :

 

استعلام من جدول Vacations عن رقم الطبيب اذا كان مسجل في جدول الاجازات ؛ ثم نقوم بالتحقق هل له اجازة مسجلة في فترة يقع فيها تاريخ اليوم ؛ ثم قمنا باضافة الدالة nz  حتي اذا لم يجد اي بيانات مسجلة يرجع لنا بالقيمة صفر ؛ وبالتالي لا تطبق خاصية التنسيق الشرطي

 

 

 

 

مرفق الملف بعد التعديل ؛ وبرجاء في المرة القادمة رفع الملفات بتنسيق 2003 ؛ لان هناك قاعدة كبيرة من المستخدمين تفضل هذا الاصدار

 

 

Vacations_edit.rar

 

لا تنسونا من الدعاء

1
#3

مجهود طيب اخي الكريم هشام

 

وانا معك في موضوع القواعد بصيغة 2003 لان الاغلب يفضله

 

تحياتي

+1

اذا دعتـــك قدرتك على ظلـــم الناس   فتذكر قدرة الله عليــــــك

#4

الف شكر اخى هشام .... هذا ما كنت اطلبه ... جزاك الله خيرا

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

... حيث ان الوضع الحالى يستلزم اغلاق الفورم ثم اعادة فتحه ليظهر التأثير

خالص شكرى وتحياتى

#5

السلام عليكم

 

أخي الكريم

 

التنسيق الشرطي يتم تنفيذه عن تحميل السجل ؛ فبالتالي يجب عليك عمل عملية تحديث للسجل حتي نري التحديثات "ما يسمي أغلاق النموذج والعودة أو الذهاب لسجل اخر من الشاشة الرئيسية والرجوع مري اخري"

 

إزاي نقدرنتغلب علي الموضوع ده؟

يمكن نستخدام الكود "Refresh" لتحديث السجلات ؛ ولكن يجب أن نشير علي النموذج الرئيسي ؛ لاننا أذا استخدامنا كود "Refresh" علي النموذج الفرعي لن يحدث تحديث للنموذج الرئيسي

لذلك يجب علينا ان نستخدم الاشارة كاملة الي النموذج الرئيسي وذلك باستخدام الكود التالي :

Forms!Nyaba.Form.Refresh

 السؤال التالي في أي حدث نقوم باستخدام هذا الكود؟

أحنا عندنا حقلين ؛ بداية الاجازة و نهاية الاجازة ؛ نقدر نضيف الكود في خاصية بعد التحديث علي كل من الحقول ؛ بس ده يكون مشروط ان القيمتين يكون فيهم قيمة "مش فاضيين أو واحد فيهم فاضي"

يبقي نقدر نستخدم قاعدة IF  لنشترط ان الحقليين يكون فيهم قيمة

 

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

 

كده يبقي الشغل كله تمام ؛ بس مش منطقي ان اكتب الكود ده كله في كل حدث من الاحداث التلاتة "اللي انا محتاج يتم عملية التحديث فيهم" ؛ كمان لو انا عايز اعدل في الكود كده حعدل تلات مرات ... طيب نعمل ايه ؟

بسيطة جدا ؛ نعمل function ونكتب فيها الكود كامل ونستدعي ال function من الاحداث السابقة ؛ في حدث عن الحذف في النموذج الفرعي وفي حدث بعد التحديث لبداية الاجازة وفي حدث بعد التحديث التاريخ لنهاية الاجازة

call function طبعا نكتب أسم الدالة اللي بنطلبها "ده مثال"

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

 

بسيطة جدا ؛ نبعت قيمة لما نيجي نطلب ال function وعلي اساس القيمة دي نقدر نحدد اذا كان طلب تشغيل الدالة جاي بعد حذف سجل او جاي بعد كتابة سجل جديد :)

مثلا نبعت القيمة "y" لما يكون طلب الدالة جاي بعد حذف سجل ؛ ونستخدم القيمة "a"  لو طلب الدالة جاي بعد تحديث حقل

 

طيب تيجي نشوف الكود كامل علي بعضه هيكون شكله ايه ؟؟؟

Function UpdateColor(IsThisDeleted As String)

On Error Resume Next

    If IsThisDeleted = "y" Then
    
        Forms!Nyaba.Form.Refresh
    
    Else
    
            If Not IsNull([Forms]![Nyaba]![Vacationsl_Sub].[Form]![Start_Vac]) And Not IsNull([Forms]![Nyaba]![Vacationsl_Sub].[Form]![End_Vac]) Then
            
            
                    Forms!Nyaba.Form.Refresh
             
             
            End If
    
    End If

End Function

أتمني أكون وفقت في الشرح :D

 

 

Vacations_Edit2.rar

 

 

لا تنسونا من الدعاء

تم تعديل هذه المشاركة بواسطة Hisham_wz في 1 مارس 2014 في 00:49

#6

اخى العزيز هشام

متميز ..... رائع ...... زادك الله علما ونفعك به

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…