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

كيفية البحث في قاعدة بيانات Access

مغلق
بدأه saw في 16 مايو 2005 · 27 رد · 3,111 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

.. || نبذة سريعة || ..

البرنامج عبارة عن إدخال وتخزين بيانات عن طريق داتابيز أكسس ..

المشكلة الأولى:

أردت أن لا أضيف مكرر في جدول وهو خانة الأسم ..

اسم Ros في قاعدة البيانات fname ..

عملت لوب يبحث لي داخل الجدول المحدد ويقارنه بالمدخل الجديد إذا كان موجود يظهر لي رسالة انّه موجود ويمسح الخانة لإدخال اسم آخر..

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

لو كانت الداتابيز Empty ما فيها أي ريكورد .. ما راح يشتغل البرنامج وراح يوقف .. بسبب أنّ أول ما يضغط زر اضافة راح يدخل في اللوب وإذا كانت الداتا فاضية راح يكون الخلل فيه !!

ما هو الحل لتفادي المشكلة !

( نريد نضيف شغلة أنّ أول ما يضغط زر إضافة يدخل الداتابيز إذا كانت فاضية ما يدخل اللوب وتتم الإضافة .. وهذي راح تكون أوّل عملية فقط .. ) ..

الكود قبل الاضافة اللي يسوي مقارنة بين المدخل الجديد وريكورد الداتا هو:

With Data1.Recordset

.MoveFirst

Do Until .EOF

If !fname = Text1.Text Then

MsgBox "موجوووود!!", vbMsgBoxRight + vbMsgBoxRtlReading, "مكررر!"

Text1 = ""

Exit Sub

Else

.MoveNext

End If

Loop

End With

اقتباس

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

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

../ البحث بواسطة اسم اسمة في الداتا (( fname )) ..

# نراعي في حالة البحث:

ـ تجاهل حالة الأحرف ( كبتل / سمول لتر )..

ـ يبحث عن جزء من الكلمة أو كلمة على الأقل .. وليس حالة تطابق تام !

ـ عرض النتائج + معلومة من كولوم آخر اسمه في الداتا (( trans )).

مثال:

لو عندي ركوردز مسجل في ( fname ) بـ :

Mohammed A.rahman

Mohammed Ahmed

mohammed Yousif

Mohammed Adel

راح تكون نتيجة البحث كل الأسماء ..

Mohammed A.rahman

Mohammed Ahmed

mohammed Yousif

Mohammed Adel

وما هي أفضل طريقة لعرض النتائج .. هل DBGrid?

:rolleyes: أتمنّى أن أجد الأفكار والحل بين يديكم .. وبخبراتكم نستفيد ..

مع التحية،

saw!

تم تعديل هذه المشاركة بواسطة saw في 16 مايو 2005 في 15:37

saw4dg.gif
#2

السلام عليكم

الحل للمشكلة الأولي :

للتأكد من أن الجدول فارغ ؟

if rs.recordcount< 1 then exit sub
gaza3-3.jpg
#3

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

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

اذا كتبت كود البحث فى حدث الضغط على زر الاضافة فسيتم تنفيذ الكود عند كل اضافة

اقتباس
.. ومشكلة الثانية حالة التطابق التام .. !!

# نراعي في حالة البحث:

ـ تجاهل حالة الأحرف ( كبتل / سمول لتر )..

مشكلة التطابق التام للحروف يمكنك تفاديها بكتابة الجملة Option Compare Text فى قسم الاعلانات العامة

اقتباس
ـ يبحث عن جزء من الكلمة أو كلمة على الأقل ..

يمكن عمل ذلك بالامر Instr

اذا لم اكن قد فهمتك فارجو التوضيح قليلاً :rolleyes:

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

feed.1.gif

#4

مرحباً من جديد ..

بداية أود أن أشكر لكم تجاوبكم معي وبالخصوص الأستاذ الفاضل/ إبراهيم الطيب،

والأخ العزيز/ ghost2010 ،

مروركم هنا شرف لي .. كما أشكر لكم حسن تجاوبكم معي مرّة أخرى ..

لقد حلّت المشكلة الأولى .. والفضل يعود للأستاذ الفاضل / ابراهيم .. وذلك بإضافة recordcount ليصبح الكود هكذا ..

If Data1.Recordset.RecordCount < 1 Then

' ما أريد من البرنامج ان يضيفة .. 

Exit Sub

' انتهاء العملية ..

وبالفعل كانت في الصميم ..

شكرا مرّة أخرى ..

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

الأخ العزيز / ghost2010 ..

شكراً لتجاوبك معي إلاّ أنّي لم أفهم طريقة كتابة الكود .. وماذا تعني بالاعلانات العامة !؟

خاصية ..

Option Compare Text

Instr

لم تمرّا عليّ من ذي قبل .. فهلا وضّحت لي طريقة الاستخدام ..

كل ما أود أن أفعله ..

بحث داخل الداتابيز .. بشروط الآتية ..

ـ اهمال الحروف ( كبتل / سمول ) ..

ـ عرض النتائج .. مثلاً

لو كان نتيجة البحث:

Mohammed يعرض معلومة أخرى من جدول ثاني مثلاً البلد ( البحرين )

mohammed fady ( السودان )

..

هلا وضحتم لي طريقة البحث هذه ؟؟!!

مع الشكر الجزيل ..

Saw!

post-50122-1116267144_thumb.png

saw4dg.gif
#5

حسناً اخى الفاضل سأشرح لك بالتفصيل الجملة Option Compare Text والامر Instr

اولاً بالنسبة للجملة Option Compare Text

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

ثانياً بالنسبة للامر Instr فشرحه كالتالى

يحتاج هذا الامر الى 4 معاملات هى كالتالى

1-معامل Start وهو مكان الحرف الذى سيبدأ من عنده البحث فاذا اردت ان تبحث من بداية النص فاجعل قيمته 1 اى من أول حرف وهكذا.........واضح؟

2-معامل String1 وهو النص الذى سيتم البحث بداخله

3-معامل String2 وهو النص الذى تبحث عنه

4-معامل Compare وهو يعبر عن نوع المقارنة التى تريد اجراؤها بين النصين وفى طلبك اجعلها vbTextCompare لتعمل نفس عمل الجملة Option Compare Text

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

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

ارجو ان يكون شرحى واضح لانى لااجيد الشرح.

تحميل حقل الى الكمبو بوكس.zip

تم تعديل هذه المشاركة بواسطة ghost2010 في 16 مايو 2005 في 21:39

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

feed.1.gif

#6

شكرا اخي ..

إذا لم أفلح يتوجّب عليك مساعدتي وأكون لك من الشاكرين ..

تحية مة أخرى ،

تم تعديل هذه المشاركة بواسطة saw في 16 مايو 2005 في 21:44

saw4dg.gif
#7
اقتباس
إذا لم أفلح يتوجّب عليك مساعدتي وأكون لك من الشاكرين

اخى بدون شكر انا تحت امرك فهذا واجبى وواجب كل من لديه معلومة مفيدة :rolleyes:

تم تعديل هذه المشاركة بواسطة ghost2010 في 16 مايو 2005 في 22:33

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

feed.1.gif

#8

شكراً أخي ..

Option Compare Text

عرفت استخدامها ..

وتمّ التغلب على مشكلة البحث ( سمول / كبتل لتر ) ..

ما أريده الآن تحديداً ..

التخلص من حالة التطابق التام في الداتا .. !

يعني لو عندي في الداتا ..

Saw 1

saw 2

saw 3

saw 4

أريدهم جميعاَ يظهرون في حالة البحث .. مسوي while Do

لكن اريد التخلص من حالة التطابق التام إذا كان الشفاء في instr فأرجو توضيح التركيب النحوي ( Syntax ) ..

والكود يقول ..

If !fname = ser.Text Then

كيف يمكن التطبيق ؟؟

مع التحية،،

Saw!

تم تعديل هذه المشاركة بواسطة saw في 17 مايو 2005 في 00:48

saw4dg.gif
#9

حسنأً اخى الفاضل

هذه هى طريقة الامر Instr

if instr(1,!fname,"saw",vbTextCompare) <>0 then

ارجو ان تكون قد وضحت لديك :rolleyes:

تم تعديل هذه المشاركة بواسطة ghost2010 في 17 مايو 2005 في 07:14

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

feed.1.gif

#10

شكراً أخي لحسن تجاوبك معي .. وإنني لأعجز عن شكرك .. إلاّ أنّ ما أردته لم يتحقق .. حيث ..

if instr(1,!fname,"saw",vbTextCompare) <>0 then

1 .. يعني أي حرف بالـ s راح يظهر .. ولو وضعت 2 راح يظهر أي فلم به 3 s .. إذ هذه المقارنة تحتاج لعناية وتركيب من جديد ! أو أنّي لم أستوعب ما أردت ان افعله !!

ما زلت أنتظر إجابة وافية وشافية .. ؟!

هل من مجيب ؟

+++ السؤال +++

ماهي أفضل طريقة للبحث داخل db أكسس، بحيث يبحث عن الكلمة وليس حالة التطابق التام ! ..

+++++++++++

تحية أخوية،

saw4dg.gif
#11

اخى هل من ممكن ان توضح ماتقصده بحالة التطابق التام فاذا كنت تقصد حالة الاحرف فالحل فى جملة Option Compare Text واذا كنت تقصد حالة وجود متغير كجزء من متغير اخر فالحل فى امر Instr فما هو مفهوم حالة التطابق التام لديك حتى نستطيع المساعدة لان كلامك غير واضح واعذرنى لانى غبى قليلاً :rolleyes:

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

feed.1.gif

#12

مرحبا من جديد ..

:D لعلّي لم أستطع أن أكتب السؤال بالطريقة الصحيحة .. لدى حصل بعض اللبس في الموضوع ..

مرفقاً هذه الصورة التوضيحية لما أريد عمله وطريقة البحث ..

أعلم أنّي أرهقتك معي أخي/ ghost2010 ..

لعلّي أستطيع رد جميلك في المرّات القادمة ..

B) نوّرونا بأفكاركم وخبراتكم ..

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

dbacees2mn.gif

رابط الصور غذا لم تظهر:

http://img286.echo.cx/img286/38/dbacees2mn.gif

شاكراً لكم حسن تجاوبكم معي ..

تحية اخوية،

Exampel.zip

saw4dg.gif
#13
اقتباس
أعلم أنّي أرهقتك معي أخي/ ghost2010 ..

اخى لاتقل شيئاً كهذا فهذا واجبى نحو أعضاء هذا المكان الرائع

لقد عدلت لك الملف حتى يقوم باظهار جميع النتائج واستخدمت الامر Instr جرب واذا وجدت اى خطأ فأخبرنى :rolleyes:

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

feed.1.gif

#14

اسف لقد نسيت ان اضع الملف ارجو المعذرة وهاهو الملف :rolleyes:

Exampel.rar

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

feed.1.gif

#15

شكراً أخي ،

:lol: وين اروح من جمايلك ..

التعديل صحيح.. !! :unsure:

ولكن ..

لكي تفهم قصدي أبحث عن حرف S ...

وانظر إلى النتائج !! B)

تحية أخي !

:lol: مين يحلها ؟؟؟!!

تم تعديل هذه المشاركة بواسطة saw في 18 مايو 2005 في 11:26

saw4dg.gif
#16

عند البحث عن S يظهر لك كل الريكوردز التى تحتوى على هذا الحرف

الا تريد ذلك؟! :unsure:

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

feed.1.gif

#17

:lol: أحسنت أخي ..

تمّ إنجاز العمل ..

شكراً جزيلاً ..

كان لديّ لبس ..

:D

مع التحية،

saw4dg.gif
#18

الحمد لله........الموضوع ده حسسنى انى اغبى انسان على وجه الارض لانى كل مااقوللك على حل مايكونش هو المطلوب لكن اخيرا قدرت اساعدك :lol: :lol:

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

feed.1.gif

#19

بالعكس ..

أنت قمر منور في الموضوع ..

لولاك ربما كان الموضوع في غبار الصفحات المنسيّة ( ربما ـ جائز للصحة أو الخطأ ) ..

تحية أخوية ،

saw4dg.gif
#20

زين ياخوان لو ابيها تبحث في الاسم والعنوان والتاريخ شنو الكود اذا ممكن تفيدوني

#21

يمكنك اضافة استبدال السطر

If Instr(1,!fname,Text1.Text,vbTextCompare)

بالسطر التالى

If Instr(1,!fname,Text1.Text,vbTextCompare) Or Instr(1,!address,Text1.Text,vbTextCompare) Or Instr(1,!date,Text1.Text,vbTextCompare)

ضع هذا السطر مكان السطر الاول وسيفعل لك البرنامج ماتريد :rolleyes:

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

feed.1.gif

#22

الحبيب ghost2010

الجملة التالية للبحث : مثلا أعطيها محمد تأتي بكل ما في اسمه محمد

و لكن لو أعيتها محمد بن لا تأتي بشيئ

MyMainRecordset.Open "Select * from Employee Where Name Like '" & LTrim(Text1.Text) & "%';", MyConnection, adOpenStatic, adLockOptimistic

ما الحل

#23

والله كن نفسى اساعدك بس انا مش باتعامل مع جملة Select هى الحلقات التكرارية مع امر Instr بيعملوا لى احلى شغل :lol:

انا اسف والله كان نفسى اساعدك :(

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

feed.1.gif

#24

حبيبي الغالي

أضع قاعدة مكان القاعدة التي في المثال

يعطي رسال لم يتصل بالقاعدة

ما السر

#25

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

بدل علامة % بعلامة *

ويمكنك استخدام هذا الأمر ولكى يعمل بشكل صحيح وسريع ان تستخدمه فى حدث Text_change

كما يمكنك استخدامه فى فى زر

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

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

خيركم من تعلم العلم وعلمه

هذا الموضوع مغلق.

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