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

[ تمت الإجابة ]أرجو المساعدة في كود بحث

بدأه sofiane_ism في 16 يناير 2009 · 6 رد · 696 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندي طلب صغير ولكنه حيرني كثير ، فأنا أريد أن أقوم بعملية بحث في نص عن عدة كلمات مرة واحدة

مثلا

'الكلمات المراد إجادها

Text1.Text = "المعلم،الأستاذ،المدير،المشرف"

'النص الذي نبحث فيه

Text2.Text = "هذه المؤسسة يديرها هذا المدير"

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

if Search=True then

Text3.Text = "موجود"

Else

Text3.Text = "غير موجود"

End if

'***********************************************

علما أني إستعملت هذه الدالة ولكن لم توصلني الى مبتغاي

If InStr(1, Text2.Text, Text1.Text, vbTextCompare) And PHTSME.Checkll.Value = 1 Then

Text3.Text = "موجود"

Else

Text3.Text = "غير موجود"

End If

فهي تبحث على أساس أن النص الأول جملة وليس على أساس كلمات مختلفة مفصولة عن بعضها بفاصلة

في الأخير أرجو من الاخوة الأعضاء المساعدة

:huh:

#2

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

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

#3

قم بعمل مصفوفة لتكوين جملة الـ SELECT مضاف إليها الشروط مجهولة العدد

أي لكل كلمة شرط .. الكود التالي سيوضح لك ما اقصد مع العلم أني استخدمت علامة الـ + للتفرقة بين كلمة وأخرى


Dim TMP1Str As String
Dim TMP2Str As String
Dim TMPArr() As String

TMP1Str = "المعلم+الأستاذ+المدير+المشرف"

TMPArr = Split(TMP1Str, "+")

For i = LBound(TMPArr) To UBound(TMPArr)
TMP2Str = TMP2Str & IIf(Len(TMP2Str), " WHERE (", " Or ") & "MYField='" & TMPArr(i) & "'"
Next

If Len(TMP2Str) > 0 Then TMP2Str = TMP2Str & ")"

SQLStr = "SELECT * FROM MYTable " & TMP2Str
	Dim SQLStr As String

بإمكانك إستبدال الـ + بـالمسافة أو أي حرف آخر كما يليق لك

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

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

#4

شكرا للأخ mrx_ta7ady على التفاعل لكن ياريت توضح الكود وكيفية إستعماله فأنا حسب مافهمته من الكود أنه يقوم فصل الكلمات التي بينها علامة + ، أنا لم أعرف كيف أطبقه وكيف لي أن أطبق عليه كود البحث

أما بالنسبة للأخ shadi77 فأنا ممتن لمشاركته لكن العملية بالطريقة التي إقترحها كبيرة فإذا كنت أريد البحث عن مئة كلمة مثلا صيصعب ذلك

وأرجو من الله ومن الأعضاء أن يفيدونا في هذه المعضلة

#5

وهذه طريقة أخرى:

  1.  
  2. Dim strWords() As String
  3. Dim i As Integer
  4. strWords = Split(txtWords, ".")
  5. For i = LBound(strWords) To UBound(strWords)
  6. If InStr(1, txtSearch, strWords(i)) Then
  7. txtResult = "Exists"
  8. Exit For
  9. Else
  10. txtResult = "Doesn't Exitst"
  11. End If
  12.  

هذه الجملة خاطئة  :wacko: 


#6

Abboodd شكرا الأخ

Dim strWords() As String

Dim i As Integer

strWords = Split(txtWords, ".")

For i = LBound(strWords) To UBound(strWords)

If InStr(1, txtSearch, strWords(i)) Then

txtResult = "Exists"

Exit For

Else

txtResult = "Doesn't Exitst"

End If

Next

الكود يشتغل 100/100 ولبى طلبي شكرا مرة أخرى يا أستاذ :happy: :happy: :happy:

#7

أهلا وسهلاً.

على فكرة الكودان متشابهان جداً.

ولكن الأخ تحدي استعمل جملة SQL ليحقق المطلوب. وتغييرات أخرى بسيطة.

هذه الجملة خاطئة  :wacko: 


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