منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : سؤال عن الاكمال التلقائي لصندوق النص
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
عندي داتا جريد فيو مكونة من 4 اعمدة
عملت العمود الاول صندوق نص
محتاج لما اكتب اي حرف البرنامج يرشح العناصر المشابهة من قاعدة بيانات اكسس
انا عملت الكود ده
PHP كود :
 Private Sub DataGridView1_EditingControlShowing(sender As ObjectAs DataGridViewEditingControlShowingEventArgsHandles DataGridView1.EditingControlShowing
      
        If DataGridView1
.CurrentCell.ColumnIndex 0 AndAlso TypeOf e.Control Is TextBox Then
         
            command 
= New OleDbCommand(sqlConn5)
 
           If Conn5.State ConnectionState.Open Then Conn5.Close()
 
           Conn5.Open()
 
           reader command.ExecuteReader()
 
           Dim autocomp As New AutoCompleteStringCollection
            While reader
.Read
                autocomp
.Add(reader.GetString(0))
 
               '  autocomp.Add(reader("item_name"))
            End While
            reader.Close()

            With DirectCast(e.Control, TextBox)

                .AutoCompleteMode = AutoCompleteMode.SuggestAppend

                .AutoCompleteSource = AutoCompleteSource.CustomSource

                .AutoCompleteCustomSource = autocomp
            End With

        End If
        Conn5.Close()

    End Sub 
واشتغل معايا اول لما اكتب حرف واحد بيضيف كل العناصر اللي بتبدا بالحرف ده
انا عايز اعدل علي الكود
يعني لما اكتب حرف واحد يعرض جميع العناصر التي تحتوي علي الحرف ده
يعمي مش شرط تبدا بالحرف او في الوسط او الاخر
يعني عرض جميع العناصر التي تحتوي علي المقطع المدخل
ولكم جزيل الشكر
يوجد نقص بالكود خاص كود الاستعلام
الذى يفترض انك قمت بعملاً لهذا السطر

كود :
Command = New OleDbCommand(Sql, Conn5)

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

كود :
"SELECT * FROM nametable WHERE name LIKE '%" & textbox1.text & "%'"

تحياتى لك
وتمنياتى لك التوفيق
(18-06-18, 05:41 AM)elgokr كتب : [ -> ]
يوجد نقص بالكود خاص كود الاستعلام
الذى يفترض انك قمت بعملاً لهذا السطر

كود :
Command = New OleDbCommand(Sql, Conn5)

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

كود :
"SELECT * FROM nametable WHERE name LIKE '%" & textbox1.text & "%'"

تحياتى لك
وتمنياتى لك التوفيق

حبيب قلبي
PHP كود :
Dim CnString5 As String "provider=microsoft.jet.oledb.4.0;data source=" Application.StartupPath "\Database1.mdb;user id=admin;jet oledb:database password=01283411310a"
    
Dim Conn5 As New OleDbConnection(CnString5)


    
Dim command As OleDb.OleDbCommand
    Dim adapter 
As OleDbDataAdapter
    Dim reader 
As OleDbDataReader
    Dim dataset1 
As DataSet
    Dim sql 
As String "select item_name from items" 
ده الكود للاتصال بالعمود الخاص باسم العناصر
وعمل فلترة علي حسب المكتوب داخل التكست بوكس بالداتا جريد فيو
هرفع الفورم كامل للتعديل
وشكرا للاهتمام

الكود في المرفقات للتعديل
وشكرا للمتابعة
للاسف كود الاستعلام الذى موجود وهو
كود :
select item_name from items

وهذا الاستعلام لم يقوم باى فلتر 
بل يعرض جميع محتوى جدول items
ليعرض كل نتائج العمود item_name

يجب ان يكون كود الاستعلام بهذه الطريقة
كود :
"SELECT item_name FROM items WHERE item_name LIKE '%" & textbox1.text & "%'"

تحياتى لك
وتمنياتى لك التوفيق
PHP كود :
"SELECT item_name FROM items WHERE item_name LIKE '%" textbox1.text "%'" 
فين الاقي textbox1.text
انا باكتب داخل العمود الاول للجريد فيو
مش في textbox1
يبدو انا فهمت سؤالك بالخطاء من البداية
ولا انتبه انك تريد انشاء 
AutoCompleteStringCollection

فى البداية لا يمكن عمل الفلتر على 
CustomSource

من خلال الحرفي فى منتصف الكلمة او باخرها
وظيفة 
CustomSource

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

بظبط كما لو انت بتكتب اسم
hatem555

فالطبيعي عند كتابة حرف H
لا يقوم باظهار مثلاً Ahmed

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

فهذا هى فكرة الاداء الذى تستخدمها



ايضاً يمكنك استخدام ComboBox
فى اعمدة الـ DataGridView

بحيث تجعل المستخدم اختيار المنتج مباشر بدلاً من الكتابة

تحياتى لك
وتمنياتى لك التوفيق