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

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

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

كيف يمكنني عمل بحث على حقل الاسم في قاعدة البيانات حيث عند كتابة كل حرف من أحرف داخل textBox الاسم يتم البحث واستعراض الأسماء المشابهه من قاعدة البيانات على Lable أو ListBox

مثلا عند كتابة حرف م يتم عرض (محمد ،محمود،مازن،مؤيد...)

عندكتابة الأحرف مح يتم عرض(محمد،محمود) وهكذا

وتقبلوا تحيات أخوكم

#2

السلام عليكم

أخي الكريم بعد تهئية الإتصال بقاعدة البيانات طبعا ذلك بواسطة الإداة ADO .

ضع الكود التالي في Private Sub Text1_Change() وعلى فرض المتغير الخاص بي الRecordSet هو rs

الكود /

'

 If Trim(Text1.Text) = "" Then Exit Sub
 If rs.State = adStateOpen Then rs.Close
    rs.Open "SELECT * FROM [اسم الجدول] WHERE [اسم الحقل] LIKE '" & Trim(Text1.Text) & "%'", db, adOpenForwardOnly, adLockReadOnly
'
 If rs.RecordCount = 0 Then
     List1.Clear
 Else
     If rs.EOF = False Then
                     rs.MoveFirst
        Do While Not rs.EOF
            If Not IsNull(rs![اسم الحقل]) Then _
               List1.AddItem rs![اسم الحقل]
             rs.MoveNext
            Loop
        End If
'

ولا تنسا تضيف ListBox .

بالتوفيق .

تم تعديل هذه المشاركة بواسطة Visitor_OM في 4 سبتمبر 2003 في 09:22

#3

ألف شكر أخوي Visitor_OM وكثر الله من أمثالك

راح أجرب الكود

وتحياتي لك

#4

أخي يظهر لدي Error في الكود التالي مالسبب:

Private Sub Text1_change()

Dim DB As DAO.Database

Dim RS As DAO.Recordset

Dim StrPath As String

StrPath = App.Path & "\db1.MDB"

If Trim(Text1.Text) = "" Then Exit Sub

Set DB = OpenDatabase(StrPath)

If RS.State = adStateOpen Then RS.Close

Set RS = DB.OpenRecordset("SELECT * FROM Name WHERE FirstName LIKE '" & Trim(Text1.Text) & "%'", DB, adOpenForwardOnly, adLockReadOnly)

If RS.RecordCount = 0 Then

List1.Clear

Else

If RS.EOF = False Then

RS.MoveFirst

Do While Not RS.EOF

If Not IsNull(RS!FirstName) Then _

List1.AddItem RS!FirstName

RS.MoveNext

Loop

End If

End Sub

#5

اخي الكريم

حقيقة سبب المشكلة هو استخدامك للإداة DAO والكود السابق معمول ليتخاطب مع مكتبة الإداة ADO .

ولتفعيل مكتبة هذه الإداة اتبع المسار التالي /

من القائمة ال VB اختر Project ثم References ثم من القائمة التي سوف تظهر اختر Microsoft ActiveX Data Object 2.0 Library مع مراعة الرقم حيث إنه يشير إلى الإصدار التابع لها .

ثم انقل هذا الكود للفورم بدون تغيير .

'
 Dim DB As New ADODB.Connection
 Dim RS As New ADODB.Recordset
'
Private Sub Form_Load()

 Dim StrPath As String
     StrPath = App.Path & "\db1.MDB"

 DB.CursorLocation = adUseClient
 DB.Provider = "Microsoft.Jet.OLEDB.4.0"
 DB.Open StrPath
'
End Sub
'
Private Sub Text1_Change()
'
 If RS.State = adStateOpen Then RS.Close
    RS.Open "SELECT * FROM Name WHERE FirstName LIKE '" & Trim(Text1.Text) & "%'", DB, adOpenForwardOnly, adLockReadOnly
'
 If RS.RecordCount = 0 Then
              List1.Clear
 Else
'
              List1.Clear
           If RS.EOF = False Then
'
              RS.MoveFirst

 Do While Not RS.EOF
       If Not IsNull(RS!FirstName) Then _
              List1.AddItem RS!FirstName
              RS.MoveNext
  Loop
 End If
End Sub

بالتوفيق .

تم تعديل هذه المشاركة بواسطة Visitor_OM في 6 سبتمبر 2003 في 08:16

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…