PDA

View Full Version : حطا در جستجوی کارکتر به کارکتر در combo box



near_86
دوشنبه 02 اردیبهشت 1387, 08:42 صبح
سلام

در رویداد textchange ی combo box کدی نوشتم که با وارد کردن هر کارکتر در صورت وجود در دیتا بیس ی لیست نمایش داده میشه

ولی با دو مشکل مواجه میشم

1- زمانی که فرم باز میشه و در combo اولین حرف وارد میشه جستجویی انحام نمیشه
(ولی بعد از حذف کارکتر و وارد کردن کارکتر دوباره جستجو انجام میشه)

2- بعد از چند بار جستجو با خطای زیر روبرو میشم

Attempted to read or write protected memory. This is often an indication that other memory is corrupt.





Me.cmb_nbook.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppen d

Me.cmb_nbook.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSour ce
Dim maxcode AsInteger
Dim I AsInteger
PubSqlCom.CommandText = " select Count(*) from book where bname like N'%" & cmb_nbook.Text & "%' and cbook1 is not null"
PubSqlCom.Connection = PubSqlCon
If PubSqlCon.State = ConnectionState.Open Then PubSqlCon.Close()
If PubSqlCon.State = ConnectionState.Closed Then PubSqlCon.Open()

'--------------------------------------------
maxcode = PubSqlCom.ExecuteScalar
Dim codelist(maxcode) AsString
If maxcode = 0 Then
' MsgBox("ىیچ §ں묤ییی ں뢦ں 묧ى ں«¢")
codelist(0) = "error"
If PubSqlCon.State = ConnectionState.Open Then PubSqlCon.Close()
'Exit Sub
Else

PubSqlCom.CommandText = "SELECT bname from book where bname like N'%" & cmb_nbook.Text & "%' and cbook1 is not null"
'PubSqlCom.Connection = PubSqlCon
If PubSqlCon.State = ConnectionState.Open Then PubSqlCon.Close()
If PubSqlCon.State = ConnectionState.Closed Then PubSqlCon.Open()
PubSqlDR = PubSqlCom.ExecuteReader()
I = 0
While PubSqlDR.Read()
codelist(I) = Trim(PubSqlDR.Item("bname").ToString)
cmb_nbook.AutoCompleteCustomSource.Add(PubSqlDR.It em("bname").ToString)
I += 1
EndWhile
EndIf
If PubSqlCon.State = ConnectionState.Open Then PubSqlCon.Close()

ali_md110
سه شنبه 03 اردیبهشت 1387, 04:09 صبح
ComboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend
ComboBox1.AutoCompleteSource = AutoCompleteSource.ListItems
Dim CNN As OleDbConnection
Dim DAP As OleDbDataAdapter
Dim DS As DataSet
Dim cnnstr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\db.mdb"
CNN = New OleDbConnection(cnnstr)
cmd = New OleDbCommand
DAP = New OleDbDataAdapter("select * from table1", cnnstr)
DS = New DataSet
DAP.Fill(DS, "table1")
ComboBox1.DataSource = DS.Tables("table1")
ComboBox1.DisplayMember = "des"
ComboBox1.ValueMember = "id"

DAP.Dispose()

near_86
سه شنبه 03 اردیبهشت 1387, 08:40 صبح
ممنونم از راهنماییتون

ولی مشکلم حل نشد !!!

لطفا کمکم کنید

ali_md110
شنبه 07 اردیبهشت 1387, 02:57 صبح
دوست عزیز فکر گنم شما جستجوی در لجظه رو میخواهید انجام بدید
یعنی به محض فشردن یک کلید مثلا ع علی نوشته شود شما کافیه کوکبو را با دیتا پر کنید و خواص AutoCompleteMode و AutoCompleteSource رو ست کنید
در کد قبلی که نوشتم یک جدوال بنام table1 با دو فیلدid و des جستجو براساس فیلد des میباشد شما همیشه کوتاهترین راه و بهترین راه رو انتخاب کنید جهت پر کردن یک کومبوباکس که این همه تب تاب نمیخواد
اگر خطایی داره خبر بده

eyes_shut_number1
شنبه 07 اردیبهشت 1387, 08:22 صبح
مشکل اولت بهتره توی keypress بنویسی
مشکل دومک هم ببینیم چیه