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

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


إذهب إلى أفضل إجابة Solved by أبو عبدالله الحلوانى,

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

السلام عليكم

هذا نموذج يحتوي على عدد كبير من الأسماء به حقل اختيار  (نعم/لا)

المطلوب تكرماً إضافة إمكانية البحث فى حقل الأسم بالحروف الأولى

بحيث يجعل الاختيار سهلاً من خلال تقليص المعروض على النموذج

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

وإذا تم حذف كل السجلات لا تخرج رسالة خطأ عقب هذا الحذف

( Debug )

img?id=993633

مع جزيل الشكر مقدمأ

 

db1.mdb

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

1 ساعه مضت, أحمد العيسى said:

المطلوب تكرماً إضافة إمكانية البحث فى حقل الأسم بالحروف الأولى

لقد تم تعديل الاسم من name  الى xname   لان كلمة name كلمة محجوزة فى الاكسس

تم عمل نموذج فرعى حتى يتم البحث بالانزلاق 

لعل يكون هذا طلبك والله المستعان

db1.mdb

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

شكراً لك

للأسف  ليس هو المطلوب

لا أريد نموذج فرعى ، كما أن كلمة  name  ليست كلمة محجوزة ولا تؤثر فى عمل المثال

البحث لم يتم تلقائياً بالحرف الأول ثم الثانى ثم الثالث من كتابة كلمة البحث كما أريد

كذلك بعد الاختيار لا يتم حذف السجلات من قاعدة البيانات ، واصبح المثال مهنجاً

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

منذ ساعه, أحمد العيسى said:

لا أريد نموذج فرعى ، كما أن كلمة  name  ليست كلمة محجوزة ولا تؤثر فى عمل المثال

هذا ما اعرفه ان النموذج الفرعى يسمح بالبحث بالانزلاق

 

منذ ساعه, أحمد العيسى said:

البحث لم يتم تلقائياً بالحرف الأول ثم الثانى ثم الثالث من كتابة كلمة البحث كما أريد

انت غلطان البحث يتم تلقائيا بالحرف الاول ثم الثانى .... من كتابة كلمة البحث راجع المثال مرة اخرى

وعلى العموم هذا الحل الذى اعرفه ويمكن احد الاخوة هنا يعرف حل اخر

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

1 ساعه مضت, أحمد العيسى said:

 كما أن كلمة  name  ليست كلمة محجوزة ولا تؤثر فى عمل المثال

راجع معلوماتك ..

بل هي اشهر كلمة محجوزة . ليس في اكسس فقط

 

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

1 ساعه مضت, أحمد العيسى said:

كذلك بعد الاختيار لا يتم حذف السجلات من قاعدة البيانات ، واصبح المثال مهنجاً

هنا ما علاقة الحذف بالبحث ؟

موضوعين مختلفين

والمفهوم من كلامك تريد الحذف بالجملة

لأن الحذف في البرامج محظور وخطير وغالبا يتم وضع ضوابط له

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

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

تمام كما  أسلفت

عدد السجلات يتجاوز  ٤٠٠ سجل وبالبحث عن بدايات اسماء  الحقول سوف يتقلص العدد الى  ١٠ سجلات  مثلا ..

يمكن حينها اختيار  ٣ سجلات منهم ، و يمكن حذفهم بالضغط على زر حذف المحدد ، وبالطبع يوجد رسالة تحذير من الحذف ..

إذا  أمكن  هل هذا التعديل متاح ؟؟

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

بارك الله فيك أخى موسى ، وأطال الله عمرك ونفع بك

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

جربته على أكسس 2010  وجدته يعمل بكفاءة

لكن عند تجربته على أكسس 2003 وهو الإفتراضى عندى

كانت هناك بعض أخطاء التوافق فى المكتبات

لكن الغريب عندما أردت إضافة تلك المكتبات وجدت الأمر  References  باهت ولا يمكن اختياره

img?id=994324

img?id=994325

img?id=994326

أما بخصوص كلمة Name لم أجد لها تأثير فى أكسس 2003 .. لكن جاري تغييرها فى أصل التطبيق

تحسباً  لعدم تسامح البرنامج  فى مواضع أخرى لكلماته المحجوزة

تم تعديل بواسطه أحمد العيسى
  • Like 1
رابط هذا التعليق
شارك

16 دقائق مضت, أحمد العيسى said:

لكن الغريب عندما أردت إضافة تلك المكتبات وجدت الأمر  References  باهت ولا يمكن اختياره

 

اقفل الملف وافتحه من جديد وادخل مباشرة الى References  ستجدها مفعلة

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

 

5 دقائق مضت, عبدالله بشير عبدالله said:

اقفل الملف وافتحه من جديد وادخل مباشرة الى References  ستجدها مفعلة

تمام  حصل .. وأصلحت المكتبة المعطلة ( فى أكسس 2003 )

لكن ظهر خطأ آخر 

img?id=994378

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

الملف يشتغل معى جيدا على الاوفيس 2016 وليس لدي اوفيس 2003 لكي اجرب جرب الدخول References   اي واحدة مؤشر عليها باسم MISSING  الغ التاشير ثم موافق وكنصيحة حاول ترقية الاوفيس لديك الى اصدار احدث

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

ان لم ينجح الامر جرب الكود التالي 

تأكد من أن مكتبة DAO مفعلة في مشروعك. يمكنك تفعيلها من خلال الذهاب إلى Tools > References في محرر VBA، ثم التأكد من تفعيل Microsoft DAO 3.6 Object Library

Private Sub Form_Open(Cancel As Integer)
    Dim tb As DAO.Recordset
    Set tb = CurrentDb.OpenRecordset("tbl_student1", dbOpenDynaset)
    
    If Not tb.BOF And Not tb.EOF Then
        tb.MoveFirst
        Do While Not tb.EOF
            tb.Edit
            tb.Fields("OnlyYou").Value = False
            tb.Update
            tb.MoveNext
        Loop
    End If
    
    tb.Close
    Set tb = Nothing
End Sub

 

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

او هذا الكود  

تأكد من أن مكتبة DAO مفعلة في مشروعك. يمكنك تفعيلها من خلال الذهاب إلى Tools > References في محرر VBA، ثم التأكد من تفعيل Microsoft DAO 3.6 Object Library

Private Sub Form_Open(Cancel As Integer)
    Dim tb As DAO.Recordset ' التأكد من استخدام DAO Recordset
    Set tb = CurrentDb.OpenRecordset("tbl_student1", dbOpenDynaset)
    tb.MoveFirst
    Do While Not tb.EOF
        tb.Edit ' وضع السجل في وضع التحرير
        tb.Fields("OnlyYou") = False ' تعديل قيمة الحقل
        tb.Update ' تحديث السجل في قاعدة البيانات
        tb.MoveNext ' الانتقال للسجل التالي
    Loop
    tb.Close ' إغلاق الكائن بعد الاستخدام
    Set tb = Nothing ' إلغاء الإشارة إلى الكائن
End Sub


 

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

ما زال المثال يحتاج إلى الكثير من التعديلات ، فمثلاً إذا حذفت كامل السجلات يقطع البرنامج مساره برسالة خطأ

img?id=995788

وقد استطعت التغلب على هذه الرسالة من خلال التعديل على الكود السابق

Private Sub Form_Open(Cancel As Integer)
    Dim tb As DAO.Recordset
    
    Dim Q As Integer
    Q = DCount("*", "tbl_Student1")
    If Q > 0 Then
    
    Set tb = CurrentDb.OpenRecordset("tbl_student1", dbOpenDynaset)
    tb.MoveFirst
    Else
      MsgBox ("لا يوجد سجلات لعرضها "), vbOKOnly + vbMsgBoxRight, "تنبيه"
      Exit Sub
    End If
       
    Do While Not tb.EOF
        tb.Edit
        tb.Fields("OnlyYou") = False
        tb.Update
        tb.MoveNext
    Loop
    tb.Close
    Set tb = Nothing
End Sub

كذلك لى بعض الملاحظات على عملية الفلترة من خلال تلك الصور أدناه

img?id=995785

img?id=995787

img?id=995786

 

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

2 ساعات مضت, أحمد العيسى said:

هل طلبي غير واضح ؟؟

مر  تقريبا يوم كامل ، ولا يوجد  رد   سواء  بالايجاب أو السلب   ..

مشاركة مع ملف الأستاذ موسى ، جرب هذا التعديل البسيط

تم عمل الموضوع بطريقتين ، الأولى زرين للتحديد والغاء التحديد للكل

والثانية زر واحد فقط يقوم بالمهمتين دون الحاجة لزرين اثنين ..

 

db1 (Moosak).mdb

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

1 دقيقه مضت, Foksh said:

مشاركة مع ملف الأستاذ موسى ، جرب هذا التعديل البسيط

 

اهلا ومرحبا بك عودة محمودة ان شاء الله 

والله اشتقنا لك والى حلولك الجميلة

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

1 دقيقه مضت, الحلبي said:

اهلا ومرحبا بك عودة محمودة ان شاء الله 

والله اشتقنا لك والى حلولك الجميلة

أهلا يا دكتور ,, الله يسلمك ، و أشكرك يا غالي  :wub:

 

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

8 ساعات مضت, Foksh said:

مشاركة مع ملف الأستاذ موسى ، جرب هذا التعديل البسيط

تم عمل الموضوع بطريقتين ، الأولى زرين للتحديد والغاء التحديد للكل

والثانية زر واحد فقط يقوم بالمهمتين دون الحاجة لزرين اثنين ..

 

db1 (Moosak).mdb 420 kB · 5 downloads

تم التعديل على هذا الملف من مشاركة الأخ العزيز /

عبدالله بشير عبدالله

Private Sub Form_Open(Cancel As Integer)
    Dim tb As DAO.Recordset ' التأكد من استخدام DAO Recordset
    Dim Q As Integer
    Q = DCount("*", "tbl_Student1")
    If Q > 0 Then
      Set tb = CurrentDb.OpenRecordset("tbl_student1", dbOpenDynaset)
      tb.MoveFirst
    Else
       MsgBox ("لا يوجد سجلات لعرضها "), vbOKOnly + vbMsgBoxRight, "تنبيه"
       Exit Sub
    End If

    Do While tb.EOF = False
        tb.Edit ' وضع السجل في وضع التحرير
        tb.Fields("OnlyYou") = False ' تعديل قيمة الحقل
        tb.Update ' تحديث السجل في قاعدة البيانات
        tb.MoveNext ' الانتقال للسجل التالي
    Loop
    tb.Close ' إغلاق الكائن بعد الاستخدام
    Set tb = Nothing ' إلغاء الإشارة إلى الكائن
End Sub

وإلى الآن التجربة مع المثال  تبشر بعمل شبه كامل

لكن لماذا عملية البحث بطيئة جداً  بهذا الشكل ؟؟؟

 

 

 

db2.mdb

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

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

db2.mdb

فقد رأيت طرق بحث ممتازة للأخ الحبيب أبو هاجر قديماً

لكن لم أستطيع توظيفه فى هذا الملف بدون استخدام نموذج فرعى

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

7 ساعات مضت, أحمد العيسى said:

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

السلام عليكم ورحمة الله وبركاته
مشاركة مع الاساتذة الاكارم
عملية البحث بطيئة بسبب عملية البحث اثناء الكتابة التي تريد لذ انصح بأن تكون عملية البحث بعد التحديث حتي تصل لعملية بحث سريعة 
جرب هذا التعديل 
ملاحظة نتائج البحث ستتغير بعد التحديث وليس اثناء تحديث حقل البحث (يعني اضغط انتر بعد الكتابة 😀)

db2.mdb

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

تمام أخى أبو عبدالله

يبدو  أن التعديل فى هذا النموذج ( OnlyYou1 )  أخذ الكثير من جهد الزملاء (شكراً لهم) ولم يصل للمستوى المطلوب

سوف أضيف  بالملف المرفق التالى أسلوب أبو هادى فى البحث (  البحث يتم اثناء كتابة كل حرف  ولكن سريع جداً)

والمطلوب فقط وضع  الكود المناسب  لزر  " حذف سجلات ناتج البحث " والاستغناء عن النموذج "OnlyYou1"

img?id=1005060

 

db3.mdb

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

40 دقائق مضت, أحمد العيسى said:

" والاستغناء عن النموذج "OnlyYou1"

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

 

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

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

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



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

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

Important Information