• 0
ahmed f

تصفية السجلات بناء على اكثر من شرط

سؤال

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

تحياتى لكم جميعا

 

لقد قضيت اليوم بكامله وانا احاول ان اتغلب على عدة مشكلات فى قاعدة البيانات المرفقة دون جدوى ... وارجو ان اجد لدى حضراتكم ما اريده

 

لدى هذا النموذج الذى يتم تصفيته بناء على اثنين combobox ويعمل بشكل جيد ... وارغب فى ان يتم تقييد تلك التصفية بناء على الاختيار المحدد من مربع الاختيار بالاعلى فاذا كان الاختيار ( عرض الكل ) يتم تنفيذ التصفية بكاملها اما اذا كان الاختيار( دائم)  فيتم عرض التصفية لكافة سجلات حقل نوع العمالة مؤشرا عليها واذا كان الاختيار مؤقت يتم فقط عرض كافة السجلات التى بها حقل نوع العمالة خاليا ... على ان يتم تذكر اخر اختيار عند فتح النموذج فى المرات القادمة

 

1_zpsd52ef139.png

 

اما المشكلة الثانية

 

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

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

 

2_zps98e8a6d9.png

 

اثق فى قدرتكم على مساعدتى باذن الله

 

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

filter_example.rar

تم تعديل بواسطه ahmed f
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

5 إجابة على هذا السؤال .

  • 0

وعليكم السلام :)

 

بالنسبة الى اولا:

 

1. غير اسم Frame620 الى frm_Select ،

2. هذا الكود الجديد للنموذج كاملا:

Option Compare DatabaseOption ExplicitPrivate Function OpenFilterFavorites()    On Error GoTo ErrorHandler            ' show the control and drop down the combo box    Me.cboFilterFavorites.Visible = True    Me.cboFilterFavorites.SetFocus    Me.cboFilterFavorites.Dropdown            ExitProcedure:    Exit Function    ErrorHandler:    Resume ExitProcedureEnd FunctionPrivate Sub ComboNyaba_AfterUpdate()    Combonames.Requery    'DoCmd.ApplyFilter , "NyID =" & Me.ComboNyaba    Call Check_Selected    End SubPrivate Sub ComboNames_AfterUpdate()    'DoCmd.ApplyFilter , "MyID =" & Me.Combonames    Call Check_SelectedEnd SubPrivate Sub frm_Select_Click()    Call Check_SelectedEnd SubPrivate Sub Check_Selected()        Dim FF As String        'NyName    If Len(Me.ComboNyaba & "") = 0 Then        FF = ""    Else        FF = "NyID =" & Me.ComboNyaba    End If'---------        'MyName    If Len(Me.Combonames & "") = 0 Then        Else        FF = FF & " And MyID =" & Me.Combonames    End If'---------    'Frame Select    If frm_Select = 1 Then            ElseIf frm_Select = 2 Then        FF = FF & " And Temp=-1"            ElseIf frm_Select = 3 Then        FF = FF & " And Temp=0"            End If'---------        If Left(FF, 4) = " And" Then FF = Mid(FF, 6)        Me.Filter = FF    Me.FilterOn = True    End SubPrivate Sub Form_Close()    Me.Filter = ""    Me.FilterOn = FalseEnd Sub

الآن يمكنك استعمال frm_Select مع و بدون التصفيلت الاخرى :)

 

اما ثانيا (اشتغلت عليه ثم توقفت ، لأني لم اصل الى نتيجة :( ) ،

فيجب التفكير فيه ، لأن العلاقات بين الجداول للمحافظة والمدينة غير صحيحة ، وكذلك جدول Personal يجب ان يحتوي على حقل للمدينة!!

 

مبدئيا اقترح العمل على المحافظة - المدينة ، وذلك بعمل نموذج مستمر (ليس نموذج فردي) رئيسي للمحافظة ، وبه نموذج فرعي للمدينة ، والربط بينهم بحقل المدينة :) ، بس مخي ما راضي يشتغل صح في هذا الاتجاه ، ففكر فيه ، ولكن نموذج رئيسي - فرعي هو الطريق الصح في العمل :)

 

 

 

 

جعفر

257.filter_example.mdb.zip

257.filter_example.mdb.zip

تم تعديل بواسطه jjafferr
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

:)

 

اسمح لي اشرح الكود لانه سهل ، بس لان القيم الثلاث فيه ، قد يجعله في نظرك صعب:

 

1. نحن عندنا عدد 2 مربع سرد ، و قائمة اختيار واحده ، يعني عندنا ثلاث حقول للفلتر ،

2. الطريقة اننا لا نعمل فلتر مستقل لكل مربع سرد او اختيار ، وانما نجعل Sub اسميته Check_Selected ، واحد ينظر لقيمة الاول ، ثم الثاني ، ثم الثالث ،

3. كل مربع سرد او اي اختيار ، نجعل الكود بعد تحديثه هكذا (بحيث ينادي الـ Sub Check_Selected:

Private Sub frm_Select_Click()     Call Check_SelectedEnd Sub

4. التعامل مع مربع السرد الاول :

    'NyName    If Len(Me.ComboNyaba & "") = 0 Then        FF = ""    Else        FF = "NyID =" & Me.ComboNyaba    End If'---------

نستخدم المتغير FF لجمع قيم الفلتر ،

فهنا ننظر الى مربع السرد ComboNyaba ، اذا كان فاضي ، اذن FF تساوي لا شئ ، واذا كان فيه قيمة ، فنصنع قيمة الفلتر الاول بها (لاحظ ان اسم الحقل في النموذج هو NyID وهو رقمي) ، زنضعها في FF ،

فعليه ، لو استعملنا هذا الفلتر فقط ، سيكون خانة الفلتر في النموذج هكذا:

NyID=123

 

 

 

ثم حقل السرد الثاني ، فالثالث :)

 

 

جعفر

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

جميل جداً .. سوف احاول تطبيقه .. وشكراً لك على هذا الشرح الوافي .. وتحياتي لك   :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

لدي استفسار حول موضوع الاختيار اكثر من سجل واكثب من صنف 

يرجى مساعدتي في حلها ان امكن

لدي 8 PART و 8 LEV  ارغب اختار اكثر من PART واكثر من LEV  وتحويلها الى استعلام او جدول من خلال نموذج احتيار

Database7.accdb

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .