منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
سؤال عن الاكمال التلقائي لصندوق النص - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : سؤال عن الاكمال التلقائي لصندوق النص (/showthread.php?tid=25420)



سؤال عن الاكمال التلقائي لصندوق النص - hatem555 - 18-06-18

عندي داتا جريد فيو مكونة من 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 
واشتغل معايا اول لما اكتب حرف واحد بيضيف كل العناصر اللي بتبدا بالحرف ده
انا عايز اعدل علي الكود
يعني لما اكتب حرف واحد يعرض جميع العناصر التي تحتوي علي الحرف ده
يعمي مش شرط تبدا بالحرف او في الوسط او الاخر
يعني عرض جميع العناصر التي تحتوي علي المقطع المدخل
ولكم جزيل الشكر


RE: سؤال عن الاكمال التلقائي لصندوق النص - elgokr - 18-06-18

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

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

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

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

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



RE: سؤال عن الاكمال التلقائي لصندوق النص - hatem555 - 18-06-18

(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" 
ده الكود للاتصال بالعمود الخاص باسم العناصر
وعمل فلترة علي حسب المكتوب داخل التكست بوكس بالداتا جريد فيو
هرفع الفورم كامل للتعديل
وشكرا للاهتمام

الكود في المرفقات للتعديل
وشكرا للمتابعة


RE: سؤال عن الاكمال التلقائي لصندوق النص - elgokr - 18-06-18

للاسف كود الاستعلام الذى موجود وهو
كود :
select item_name from items

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

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

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



RE: سؤال عن الاكمال التلقائي لصندوق النص - hatem555 - 18-06-18

PHP كود :
"SELECT item_name FROM items WHERE item_name LIKE '%" textbox1.text "%'" 
فين الاقي textbox1.text
انا باكتب داخل العمود الاول للجريد فيو
مش في textbox1


RE: سؤال عن الاكمال التلقائي لصندوق النص - elgokr - 18-06-18

يبدو انا فهمت سؤالك بالخطاء من البداية
ولا انتبه انك تريد انشاء 
AutoCompleteStringCollection

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

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

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

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

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

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

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



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

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

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