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

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

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

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

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

 

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

 

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

 

1_zpsd52ef139.png

 

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

 

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

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

 

2_zps98e8a6d9.png

 

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

 

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

filter_example.rar

تم تعديل هذه المشاركة بواسطة ahmed f في 6 سبتمبر 2014 في 23:52

#2

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

 

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

 

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

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

Option Compare Database
Option Explicit


Private 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 ExitProcedure

End Function

Private Sub ComboNyaba_AfterUpdate()

    Combonames.Requery
    'DoCmd.ApplyFilter , "NyID =" & Me.ComboNyaba
    Call Check_Selected
    
End Sub

Private Sub ComboNames_AfterUpdate()
    'DoCmd.ApplyFilter , "MyID =" & Me.Combonames
    Call Check_Selected
End Sub

Private Sub frm_Select_Click()

    Call Check_Selected
End Sub


Private 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 Sub

Private Sub Form_Close()

    Me.Filter = ""
    Me.FilterOn = False
End Sub

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

 

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

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

 

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

 

 

 

 

جعفر

257.filter_example.mdb.zip

257.filter_example.mdb.zip

تم تعديل هذه المشاركة بواسطة jjafferr في 10 سبتمبر 2014 في 20:16

1
#3

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

ما من كاتبٍ إلا سيفنى ... ويبقي الدهر ما كتبت يداه

فلا تكتب بخطك غير شيءٍ ... يسرك في القيامة أن تراه

 

 

مواضيع مفيدة

 

منظومة حضور وغياب موظفين/index.php/topic/290636-%D8%A5%D9%87%D8%AF%D8%A7%D8%A1-%D8%A7%D9%84%D9%89-%D9%85%D9%86%D8%AA%D8%AF%D9%89-%D8%A7%D9%84%D8%A3%D9%83%D8%B3%D8%B3-%D9%85%D9%86%D8%B8%D9%88%D9%85%D8%A9-%D8%AA%D8%B3%D8%AC%D9%8A%D9%84-%D8%AD%D8%B6%D9%88%D8%B1-%D9%88%D8%BA%D9%8A%D8%A7%D8%A8-%D9%85/

#4

:)

 

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

 

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

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

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

Private Sub frm_Select_Click()
 
    Call Check_Selected
End 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
#5

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

ما من كاتبٍ إلا سيفنى ... ويبقي الدهر ما كتبت يداه

فلا تكتب بخطك غير شيءٍ ... يسرك في القيامة أن تراه

 

 

مواضيع مفيدة

 

منظومة حضور وغياب موظفين/index.php/topic/290636-%D8%A5%D9%87%D8%AF%D8%A7%D8%A1-%D8%A7%D9%84%D9%89-%D9%85%D9%86%D8%AA%D8%AF%D9%89-%D8%A7%D9%84%D8%A3%D9%83%D8%B3%D8%B3-%D9%85%D9%86%D8%B8%D9%88%D9%85%D8%A9-%D8%AA%D8%B3%D8%AC%D9%8A%D9%84-%D8%AD%D8%B6%D9%88%D8%B1-%D9%88%D8%BA%D9%8A%D8%A7%D8%A8-%D9%85/

#6

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

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

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

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

Database7.accdb

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

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

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

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

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