اذهب الي المحتوي
أوفيسنا

طريقة بحث رائعة في الاكسس


alwasili
إذهب إلى أفضل إجابة Solved by أ / محمد صالح,

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

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

شهركم مبارك وكل عام والجميع بخير .

صراحة وجدت مثال رائع للبحث عن السجلات (شاكراً من قام بعمل هذا المثال وداعياً له بالتوفيق) ولكني عجزت في تطبيق ذلك على اعمالي 

فكرماً من الاعضاء الذين لديهم وقت بمساعدتي في شرح الطريقة حتى يستفيد منها جميع الاعضاء بالمنتدى .

طريقة بحث ممتازة.rar

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

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

16 minutes ago, alwasili said:

صراحة وجدت مثال رائع للبحث عن السجلات

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

17 minutes ago, alwasili said:

ولكني عجزت في تطبيق ذلك على اعمالي 

أرفق ملف بسيط لبرنامج لك وسنحاول إن شاء الله التطبيق

19 minutes ago, alwasili said:

شرح الطريقة حتى يستفيد منها جميع الاعضاء بالمنتدى .

كما ترى الطريقة تتلخص في كود الفلترة التالي


Private Sub comb_Search_AfterUpdate()
    On Error Resume Next
Me.Filter = Nz(comb_Search, "id") & " Like ""*" & txt_Search & "*""": Me.FilterOn = True
End Sub

''ÑãåÇä
''ÇæÝíÓäÇ

Private Sub txt_Search_Change()
    On Error Resume Next
        FindAsType = txt_Search.Text
        Me.Filter = (Nz(comb_Search, "ID")) & " Like ""*" & FindAsType & "*""": Me.FilterOn = True
        txt_Search.SetFocus
        txt_Search = FindAsType
        txt_Search.SelStart = Len(FindAsType)
End Sub

الجزء الأول من الكود يقوم بالفترة اذا قمت باختيار حقل الفلترة وتستند الفلترة على القيم الموجودة في مربع البحث

والجزء الثاني يقوم بالفلترة مع كتابة أي شيئ في مربع البحث

 

لكن هناك خطأ في الكود التالي :

Nz(comb_Search, "id")

المفترض أنه اذا لم تقم باختيار حقل للبحث فإنه تلقائيا يختار الحقل

ID

وهو حقل غير موجود في مصدر البيانات مما تظهر معه رسالة خطأ

وربما هذا ما يحدث معك عندما تحاول تطبيق المثال لذلك يجب أن تستبدله في مثالك المرفق وفي برامجك باسم الحقل الصحيح

شيئ آخر :

جرب استبدال الكود كاملاً بهذا  الكود التالي وانظر الفرق

Option Compare Database

Private Sub comb_Search_AfterUpdate()
Me.Filter = Nz(comb_Search, "CustomerID") & " Like ""*" & txt_Search & "*""": Me.FilterOn = True
End Sub

Private Sub txt_Search_Change()
        Me.Filter = (Nz(comb_Search, "CustomerID")) & " Like ""*" & txt_Search.Text & "*""": Me.FilterOn = True
        txt_Search.SetFocus
        txt_Search.SelStart = Len(txt_Search.Text)
End Sub

وأخيرا :

ربما يكون عدم التطبيق في برامجك راجع إلى الفلترة في اللغة العربية حيث أن المثال لا يدعم الحروف المتشابهة مثل الهمزات إلى آخره

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

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

وشكرا جزيلا لمن قام بهذا العمل ولكل أساتذة المنتدى الأكفاء

 

 

 

 

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

شكراً لك استاذي الفاضل على مجهودك 

وارفق لك الملف المراد عمل البحث عليه 

علماً أني حاولت تطبيق وتعديل الكود ولكن لم انجح في ذلك .

وتقبل تحياتي

 

مثال .rar

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

الان, alwasili said:

شكراً لك استاذي الفاضل على مجهودك 

وارفق لك الملف المراد عمل البحث عليه 

علماً أني حاولت تطبيق وتعديل الكود ولكن لم انجح في ذلك .

وتقبل تحياتي

 

مثال .rar

استأذن من استاذنا @Gamal.Saad 

واستأذن من استاذي الحبيب @رمهان

اتفضل

القي نظرتا الى الصورة 

انا غيرت مصدر كومبوبوكس

2017-06-10_235555.png.c6bd5a0d6bc19f5227b8bfe58341d7d9.png

والكود اصبح

Private Sub comb_Search_AfterUpdate()
    On Error Resume Next
        Me.Filter = "[" & (Nz(comb_Search, "رقم المستفيد")) & "]" & " Like ""*" & FindAsType & "*""": Me.FilterOn = True
End Sub
Private Sub txt_Search_Change()
    On Error Resume Next
        FindAsType = txt_Search.Text
        Me.Filter = "[" & (Nz(comb_Search, "رقم المستفيد")) & "]" & " Like ""*" & FindAsType & "*""": Me.FilterOn = True
        txt_Search.SetFocus
        txt_Search = FindAsType
        txt_Search.SelStart = Len(FindAsType)
End Sub

واليك المرفق بعد تعديل

 

مثال .rar

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

2 ساعات مضت, alwasili said:

شكراً لك استاذي الفاضل على مجهودك 

وارفق لك الملف المراد عمل البحث عليه 

علماً أني حاولت تطبيق وتعديل الكود ولكن لم انجح في ذلك .

وتقبل تحياتي

 

مثال .rar

بعد إذن الأستاذ جمال

أخي الكريم

يرجع الخطأ لاستعمال أسماء الحقول باللغة العربية

وتصحيح هذا الخطأ هو ما يلي

Private Sub comb_Search_AfterUpdate()
On Error Resume Next
Me.Filter = "[" & Nz(comb_Search, "رقم المستفيد") & "] Like ""*" & txt_Search & "*""": Me.FilterOn = True
Me.txt_Search.SetFocus
End Sub
Private Sub txt_Search_Change()
On Error Resume Next
        FindAsType = txt_Search.Text
        Me.Filter = "[" & (Nz(comb_Search, "رقم المستفيد")) & "] Like ""*" & FindAsType & "*""": Me.FilterOn = True
        txt_Search.SetFocus
        txt_Search = FindAsType
        txt_Search.SelStart = Len(FindAsType)
End Sub

لاحظ الأقواس قبل وبعد اسم الحقل

* يبدو أنه أثناء إعدادي للرد سبقني بها أخي شيفان

تقبل منا منكم صالح الأعمال

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

5 ساعات مضت, alwasili said:

سؤال أخير إن كنت كثرت عليكم الأسئلة

هل بالامكان طباعة تقرير ناتج عن الفلترة في المثال السابق .

 

أكيد بالإمكان

يلزمك أولا أن تقوم بتسمية الجدول والنموذج باللغة الانجليزية ولو كتابة النطق مثل alesm

والحقول الموجودة بهما أيضا

ثم تنشئ التقرير الذي تريده 

ويبقى لك كود الفتح مع الفلترة

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

10 ساعات مضت, أ / محمد صالح said:

أكيد بالإمكان

يلزمك أولا أن تقوم بتسمية الجدول والنموذج باللغة الانجليزية ولو كتابة النطق مثل alesm

والحقول الموجودة بهما أيضا

ثم تنشئ التقرير الذي تريده 

ويبقى لك كود الفتح مع الفلترة

عملت كل المطلوب باقي الكود الخاص بالفتح والفلترة

مثال .rar

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

عزيزي

هذا الكود للمطلوب وعند النقر المزدوج على عنصر البحث

Private Sub txt_Search_DblClick(Cancel As Integer)
DoCmd.OpenReport "report", acViewPreview, , Me.Filter
End Sub

ولكن اسمحولي براي هنا

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

فهنا نفس الموضوع بالتمام

 

تحياتي

 

 

 

تم تعديل بواسطه رمهان
  • Like 3
رابط هذا التعليق
شارك

9 ساعات مضت, alwasili said:

عملت كل المطلوب باقي الكود الخاص بالفتح والفلترة

مثال .rar

بارك الله لك

أرجو أن يكون الهدف قد تحقق

وهو أن استعمال أسماء الحقول والجداول بالانجليزية يسهل كتابة الكود وجمل الاستعلام sql وغيرها الكثير

لقد نشأنا على هذا

وأرجو الله أن ينفع به جميعنا

فقط تمت إضافة زر أمر لفتح التقرير في وضع المعاينة للطباعة بفلترة مثل فلترة النموذج

أي باستعمال نفس الفلتر

كما أشار الأستاذ رمهان مشكورا

وكنت أرجو أن تصل إليها بنفسك

 

 

مثال 3.rar

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

7 ساعات مضت, أ / محمد صالح said:

بارك الله لك

أرجو أن يكون الهدف قد تحقق

وهو أن استعمال أسماء الحقول والجداول بالانجليزية يسهل كتابة الكود وجمل الاستعلام sql وغيرها الكثير

لقد نشأنا على هذا

وأرجو الله أن ينفع به جميعنا

فقط تمت إضافة زر أمر لفتح التقرير في وضع المعاينة للطباعة بفلترة مثل فلترة النموذج

أي باستعمال نفس الفلتر

كما أشار الأستاذ رمهان مشكورا

وكنت أرجو أن تصل إليها بنفسك

مثال 3.rar

عفواً استاذنا القدير/ محمد صالح

معاينة التقرير تظهر كافة البيانات في الجدول وليس المفلتر 

وأنا حاولت كثيراً ولكنني جديد على التعامل مع الأكواد .

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

3 ساعات مضت, رمهان said:

عزيزي

هذا الكود للمطلوب وعند النقر المزدوج على عنصر البحث


Private Sub txt_Search_DblClick(Cancel As Integer)
DoCmd.OpenReport "report", acViewPreview, , Me.Filter
End Sub

ولكن اسمحولي براي هنا

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

فهنا نفس الموضوع بالتمام

 

تحياتي

 

 

 

الف شكر أستاذنا الحبيب رمهان 

ظبط معي الكود 

جزاكم الله جميعاً خيراً ونفع بكم في هذا الشهر الكريم وسائر حياتكم .

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

5 ساعات مضت, alwasili said:

عفواً استاذنا القدير/ محمد صالح

معاينة التقرير تظهر كافة البيانات في الجدول وليس المفلتر 

وأنا حاولت كثيراً ولكنني جديد على التعامل مع الأكواد .

 

4 ساعات مضت, alwasili said:

الف شكر أستاذنا الحبيب رمهان 

ظبط معي الكود 

جزاكم الله جميعاً خيراً ونفع بكم في هذا الشهر الكريم وسائر حياتكم .

يا ريت تذكر لنا كيف لم يعمل معك كود فتح التقرير بنفس فلتر النموذج في الملف المرفق بمشاركتي

وكيف عمل معك نفس الكود في حدث عند النقر المزدوج على مربع نص البحث المشار إليه في مشاركة أستاذ رمهان

؟؟!!

الكود المستخدم في الحالتين هو

Private Sub reprt_Click()
DoCmd.OpenReport "report", acViewPreview, , Me.Filter
End Sub

و

Private Sub txt_Search_DblClick(Cancel As Integer)
DoCmd.OpenReport "report", acViewPreview, , Me.Filter
End Sub

لاحظ السطر الثاني

DoCmd.OpenReport "report", acViewPreview, , Me.Filter

 

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

الان, alwasili said:

معاينة التقرير تظهر كافة البيانات في الجدول وليس المفلتر

انا نزلت المرفقك 

الان, أ / محمد صالح said:

يا ريت تذكر لنا كيف لم يعمل معك كود فتح التقرير بنفس فلتر النموذج في الملف المرفق بمشاركتي

وكيف عمل معك نفس الكود في حدث عند النقر المزدوج على مربع نص البحث المشار إليه في مشاركة أستاذ رمهان

؟؟!!

الكود المستخدم في الحالتين هو

كان بيعمل جيدا وهذا هو صورة منه

2017-06-12_154451.png.d9cbefe019372d17e3b4948c81a586eb.png

شكرا لك ولاستاذنا رمهان

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

في ١٣‏/٦‏/٢٠١٧ at 06:27, أ / محمد صالح said:

 

يا ريت تذكر لنا كيف لم يعمل معك كود فتح التقرير بنفس فلتر النموذج في الملف المرفق بمشاركتي

وكيف عمل معك نفس الكود في حدث عند النقر المزدوج على مربع نص البحث المشار إليه في مشاركة أستاذ رمهان

؟؟!!

الكود المستخدم في الحالتين هو


Private Sub reprt_Click()
DoCmd.OpenReport "report", acViewPreview, , Me.Filter
End Sub

و


Private Sub txt_Search_DblClick(Cancel As Integer)
DoCmd.OpenReport "report", acViewPreview, , Me.Filter
End Sub

لاحظ السطر الثاني


DoCmd.OpenReport "report", acViewPreview, , Me.Filter

 

 

الخطأ.PNG

شكراً استاذنا محمد صالح لكل ما تقدمه 

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

تحياتي

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

الصورة أسفل الكود مختلفة عما أرسلته وعما كتبه أخي وصديقي رمهان

هدانا الله وإياكم لما فيه الخير

ما يهمني هو أنك وصلت لما تريد

 

فقط يلزمك زيادة فاصلة قبل الفلتر ليكون الكود في الصورة صحيحا

لأن في الفاصلة الأولى اسم الفلتر إن كان له اسم

وفي الفاصلة الثانية شروط الفلتر إن لم يكن له اسم

وفقك الله لكل خير

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

  • أفضل إجابة

وهذا تطوير للمثال بحيث يكون أكثر احترافية

بحيث يقوم بالبحث ولا يمسح محتويات مربع البحث إذا تم تغيير الحقل

وتفادي وقوع الأخطاء وعدم استعمال

on error resume next

وتحديد القيمة الافتراضية لقائمة الحقول

بحث في جميع حقول النموذج.rar

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

السلام عليكم اخواني الكرام

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

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

فما الحل ؟

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

 

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

كل عام أنتم بخير

أخي الكريم عبد الله قدور في هذه الحالة لن يتم فتح التقرير وفي نهايته الأمر

me.filter

وإنما ستحتاج مثلا

forms!subformname.filter

لأن الفلترة تتم على النموذج الفرعي

مع مراعاة استبدال subformname باسم النموذج الفرعي لديك

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

  • 4 years later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information