اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

فلترة النتائج (البحث) حسب قائمة منسدلة


إذهب إلى أفضل إجابة Solved by ابوخليل,

الردود الموصى بها

السلام عليكم

 هل يمكن فلترة النتائج عن طريق قائمة منسدلة 

يعني عندي قائمة منسدلة وفيها اكثر من 100 حقل 

لما اكتب اول حرف يظهر لي الاسم 

 

ولكني اريدها عند كتابة اي جزء من الاسماء تعمل فلترة حسب الاسم سواء كان في البداية او النصف او النهاية

 

 

تم تعديل بواسطه زياد الحسناوي
رابط هذا التعليق
شارك

  • زياد الحسناوي changed the title to فلترة النتائج (البحث) حسب قائمة منسدلة
2 hours ago, زياد الحسناوي said:

السلام عليكم

 هل يمكن فلترة النتائج عن طريق قائمة منسدلة 

يعني عندي قائمة منسدلة وفيها اكثر من 100 حقل 

لما اكتب اول حرف يظهر لي الاسم 

 

ولكني اريدها عند كتابة اي جزء من الاسماء تعمل فلترة حسب الاسم سواء كان في البداية او النصف او النهاية

 

 

خطوات تنفيذ فلترة ديناميكية في Microsoft Access:

  1. إعداد قاعدة البيانات:

    • تأكد من أن لديك جدول يحتوي على البيانات التي تريد عرضها في القائمة المنسدلة.
  2. إنشاء نموذج:

    • افتح قاعدة البيانات في Microsoft Access.
    • انتقل إلى "النماذج" (Forms) وأنشئ نموذجًا جديدًا (أو افتح نموذجًا موجودًا).
  3. إضافة مربع نص للبحث:

    • في وضع التصميم للنموذج، أضف مربع نص (Text Box) إلى النموذج. هذا سيكون مربع البحث حيث سيدخل المستخدم النص للفلترة.
  4. إضافة قائمة منسدلة:

    • أضف قائمة منسدلة (Combo Box) إلى النموذج. هذه القائمة ستعرض النتائج المفلترة.
  5. كتابة استعلام للفلترة:

    • حدد القائمة المنسدلة في وضع التصميم.

    • في خصائص القائمة المنسدلة، ابحث عن خاصية Row Source.

    • انقر على زر ... بجانب Row Source لفتح محرر الاستعلام.

    • اكتب استعلامًا يستخدم معلمة للفلترة. مثلاً:

       
       
       
      SELECT اسم_الحقل FROM اسم_الجدول WHERE اسم_الحقل LIKE "*" & [Forms]![اسم_النموذج]![اسم_مربع_النص] & "*";
      • استبدل اسم_الحقل باسم الحقل الذي يحتوي على البيانات، واسم_الجدول باسم الجدول الذي يحتوي على البيانات، واسم_النموذج باسم النموذج، واسم_مربع_النص باسم مربع النص الذي أدخل فيه المستخدم النص للبحث.
  6. تحديث القائمة المنسدلة عند إدخال النص:

    • حدد مربع النص في وضع التصميم.

    • في خصائص مربع النص، انتقل إلى حدث After Update (بعد التحديث).

    • أضف كود VBA لعمل إعادة استعلام للقائمة المنسدلة عند تحديث النص. اضغط على ... بجانب After Update لفتح محرر الكود، وأدخل الكود التالي:

       
       
      Private Sub اسم_مربع_النص_AfterUpdate()
      Me.اسم_قائمة_المندولة.Requery
      End Sub
      • استبدل اسم_مربع_النص باسم مربع النص الذي أدخل فيه المستخدم النص، واسم_قائمة_المندولة باسم القائمة المنسدلة.
رابط هذا التعليق
شارك

  • أفضل إجابة

تفضل اخي زياد

وجدت هذا الكود الجميل من ضمن الموجودات لدي .. من عمل اخي الأستاذ  @سعيد صواب 

لاحظ ان عليك تعديل اسماء الحقول ولجدول بما يتناسب معك

Private Sub combo0_AfterUpdate()
Me.txtname = Me.combo0.Column(0)
End Sub

Private Sub Combo0_Change()
Dim strText, strFind
strText = Me.combo0.Text
If Len(Trim(strText)) > 0 Then
    strFind = "txtname Like '"
    For i = 1 To Len(Trim(strText))
        If (Right(strFind, 1) = "*") Then
        strFind = Left(strFind, Len(strFind) - 1)
        End If
        strFind = strFind & "*" & Mid(strText, i, 1) & "*"
          Next
    strFind = strFind & "'"
    strSQL = "SELECT table1.txtname,table1.nnumber FROM table1 Where " & _
    strFind & " ORDER BY txtname;"
    Me.combo0.RowSource = strSQL
Else
    strSQL = "SELECT table1.txtname,table1.nnumber  FROM table1 ORDER BY table1.txtname; "
    Me.combo0.RowSource = strSQL
End If
Me.combo0.Dropdown
End Sub

 

Search_inside_Combo.rar

رابط هذا التعليق
شارك

7 دقائق مضت, ابوخليل said:

تفضل اخي زياد

وجدت هذا الكود الجميل من ضمن الموجودات لدي .. من عمل اخي الأستاذ  @سعيد صواب 

لاحظ ان عليك تعديل اسماء الحقول ولجدول بما يتناسب معك

Private Sub combo0_AfterUpdate()
Me.txtname = Me.combo0.Column(0)
End Sub

Private Sub Combo0_Change()
Dim strText, strFind
strText = Me.combo0.Text
If Len(Trim(strText)) > 0 Then
    strFind = "txtname Like '"
    For i = 1 To Len(Trim(strText))
        If (Right(strFind, 1) = "*") Then
        strFind = Left(strFind, Len(strFind) - 1)
        End If
        strFind = strFind & "*" & Mid(strText, i, 1) & "*"
          Next
    strFind = strFind & "'"
    strSQL = "SELECT table1.txtname,table1.nnumber FROM table1 Where " & _
    strFind & " ORDER BY txtname;"
    Me.combo0.RowSource = strSQL
Else
    strSQL = "SELECT table1.txtname,table1.nnumber  FROM table1 ORDER BY table1.txtname; "
    Me.combo0.RowSource = strSQL
End If
Me.combo0.Dropdown
End Sub

 

Search_inside_Combo.rar 30.28 kB · 0 downloads

وهو المطلوب عاشت ايدك استاذي الفاضل 
جاري التطبيق على الملف و اخبارك بالنتائج

رابط هذا التعليق
شارك

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

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



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information